• 締切済み

PHPのHTTP/Requesをローカルでテストする方法は?

PHP初心者なのですが、 初めてPHPのPEARパッケージにあるHTTP/Requestクラスを使って、別サーバーのAPIに対し、XMLのリクエストをし、XMLのレスポンスを受け取るやり取りをする関数を作りたいと思い、下記のような関数を作ってみたのですが、ローカル環境でどのようにテストすれば、HTTP/Requestの挙動をうまく確認できるかが思い浮かばずに、止まってしまいました。 どのようにテストすれば挙動がローカルで確認できるか、どなたか、ご教授お願いします!!! ----------- 制作した関数 引数1:リクエスト先URL、引数2: function testHttp($requestUrl,$requestXml){ $option = array( "timeout" => "3", // タイムアウトの秒数指定 "allowRedirects" => true // リダイレクトの許可 ); // HTTP_Requestの初期化 $http = new HTTP_Request($requestUrl, $option); // HTTPのヘッダー設定 $http->addHeader("User-Agent", "My PEAR PROGRAM"); $http->addHeader("Referer", $obj->protMember('LOGIN_URL')); $http->setMethod(HTTP_REQUEST_METHOD_POST); // HTTPリクエスト実行 $response = $http->sendRequest(); if (!PEAR::isError($response)) { $responseVal['resCode'] = $http->getResponseCode(); // ResponseCode $responseVal['resBody'] = $http->getResponseBody(); // ResponseBody return $responseVal; }else{ exit(); } }

  • PHP
  • 回答数1
  • ありがとう数0

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

>ローカル環境でどのようにテスト サーバーにアップせずに挙動を確認したいということですか? であれば自分のマシンにhttpサーバー+PHPの環境を構築するしかないですね HTTP/Requestはhttpサーバーと対象サイトとの間の通信環境に依存するので、 テスト環境で問題なくても本チャン環境でだめな場合(もしくは逆)も 考えられます。 結局は本チャンサーバーにテスト用のディレクトリをつくってテストページで チェックするのが賢明です

関連するQ&A

  • phpの処理を中断する方法を教えてください。

    PEARのHTTP_Requestを用いて,指定したURLのHTMLを読み込むというプログラムをPHPで組んでいます。 一部のサイト(以下のソース内の$urlに格納したURLなど)は,サイト自体が重いせいなのか,表示にとても時間がかかってしまいます。 『表示にある一定の時間以上かかる場合は読み込みを中止したい(別処理をしたい)』のですが,どのように書けばよろしいでしょうか。 $optionでHTTP_Requestのタイムアウトを指定しても,その時間でタイムアウトしませんでした。 set_time_limit()を使って実行可能な秒数を指定しようかとも考えたのですが,読み込み中止後に別処理をしたいので,何か良い方法はないかと悩んでいます。 初歩的な問題なのかもしれませんが,開発経験が少ないため解決策がわかりません。是非宜しくお願い致します。 ------------------ソース------------------ <?php require_once "HTTP/Request.php"; $url = "http://bmw.jugem.cc/?search=%C3%E6%B9%F1&mySearch="; $option = array("timeout" => "20"); // HTTP_Requestの初期化 $http = new HTTP_Request($url, $option); // HTTPのヘッダー設定 $http->addHeader("User-Agent", "My PEAR PROGRAM"); $http->addHeader("Referer", "http://www.yahoo.co.jp/"); // HTTPリクエスト実行 $response = $http->sendRequest(); if (!PEAR::isError($response)) { $ret1 = $http->getResponseCode();// ResponseCode(200等)を取得 $ret2 = $http->getResponseHeader();// ResponseHeader(レスポンスヘッダ)を取得 $ret3 = $http->getResponseBody();// ResponseBody(レスポンステキスト)を取得 $ret4 = $http->getResponseCookies();// クッキーを取得 } echo $ret3; ?> ------------------ソース------------------

    • 締切済み
    • PHP
  • PEAR HTTP_Requestでのヘッダ送信

    PEARのHTTP_Requestを使用し、 下記処理にてTEST_URL向けにPOSTとヘッダを同時に送信する処理を行いたいのですが 411 Length Requiredで返ってきてしまします。 サーバのログには Invalid URI in request Connection: Keep-Alive というログがerrorログに出ています。 そこでRFCを読んで見ると、 転送コーディングが施されていない場合は Content-Length ヘッダは送られなければならないが、 メッセージボディ中のオクテット数と 正確に一致しなければならないとの記載がありました。 ここに引っかかっているのかもと思い対策しようと思いましたが メッセージボディのlength(下記の☆部分)をどのように拾うかがわかりません。 require_once "HTTP/Request.php"; $req = &new HTTP_Request(TEST_URL,array()); $req->setURL(TEST_URL); $req->setMethod(HTTP_REQUEST_METHOD_POST); $req->addHeader('Host',"test.hogehoge.jp\r\n"); $req->addHeader('Content-Length',"-☆-\r\n"); $req->addHeader('Connection', "Keep-Alive\r\n"); $req->addHeader('User-Agent',"TEST ABCDEFG\r\n"); $req->addPostData('TEST_POST', 'testnano'); $result = $req->sendRequest(); if(PEAR::isError($result)) { echo $result->getMessage(); echo "<br />"; } else { echo $req->getResponseCode(); echo "<br />"; echo $req->getResponseBody(); echo "<br />"; } もしかして違う原因でしょうか? よろしくおねがいします。

    • 締切済み
    • PHP
  • PEARのHTTP_Requestをインストール

    さくらのレンタルサーバーにPEARのHTTP_Requestをインストールし、 http://pear.php.net/manual/ja/package.http.http-request.intro.php にあった、「yahoo.com の内容を取得し、それを表示する」という 以下のスクリプトを実行したのですが、何も表示されません。 test_yahoo.php ---------------------------------------------------- <?php require_once "HTTP/Request.php"; $req =& new HTTP_Request("http://www.yahoo.co.jp/"); if (!PEAR::isError($req->sendRequest())) { echo $req->getResponseBody(); } ?> ---------------------------------------------------- 状態は以下の通りです。 /home/user/.cshrc set path = (~/pear/bin /sbin /bin /usr/sbin /usr/bin /usr/local/sbin /usr/local/bin $HOME/bin) /home/user/www/php.ini include_path = ".:/php/includes:/home/user/pear/PEAR" %pear list Installed packages, channel pear.php.net: ========================================= Package Version State Archive_Tar 1.3.7 stable Console_Getopt 1.3.0 stable HTTP_Request 1.4.4 stable Mail_Mime 1.8.1 stable Net_Socket 1.0.10 stable Net_URL 1.0.15 stable PEAR 1.9.1 stable Structures_Graph 1.0.4 stable XML_Parser 1.3.4 stable XML_Util 1.2.1 stable % ブラウザからhttp://user.sakura.ne.jp/の /home/user/www/test_yahoo.php(属性:755)に アクセスしていますが、何も表示されません。 原因、または調べ方を教えてください。 よろしくお願い致します。

    • ベストアンサー
    • PHP
  • ローカルでは動くがサーバーでは動かない・・・

    メールを配信するCGIがあります。 フォームで登録するようになっているのですが、フォームで登録した際に、御礼のメールを配信したいと思って下記のようなphpを作っています。 フォームから送信されたデータを受け取り、送信者にメールを送った後、別のCGI(perl)にPOST送信するphpを作っています。 ローカルに作ったphp環境では動いたのですが、サーバーにアップロードすると下記のエラーが出て動きませんでした。 エラーメッセージ Warning: main(HTTP/Request.php): failed to open stream: No such file or directory in /home/*****/public_html/cgi/********/mail.php on line 34 メールを送信する部分は特に問題なく動いているみたいで問題はほかのcgiにPOST送信する部分にあるみたいです。初心者なのであるHPに掲載されていたコードをまる写しして必要な部分だけ変更しただけで、あまり意味は分からないままです。 /*POST送信*/ require_once "HTTP/Request.php"; $req =& new HTTP_Request("http://www.***.jp/******/cgi/**********/cgi-bin/*****.cgi"); $req->setMethod(HTTP_REQUEST_METHOD_POST); $req->addPostData("mail", "$mail"); $req->addPostData("md", "*****"); $req->addPostData("id", "**************"); if (!PEAR::isError($req->sendRequest())) { $response1 = $req->getResponseBody(); } else { $response1 = ""; } エラーメッセージにある34行目というのは require_once "HTTP/Request.php"; なのですが、どこに問題があるのでしょうか?

    • 締切済み
    • PHP
  • HTTPステータスコード

    phpでhttpリクエストを作成し、当該URLのステータスのチェックを行うプログラムを作成しました。 試作したプログラムの該当部分はこのようなものですが、 $response = $req->sendRequest(); if (!PEAR::isError($response)) { $ret = $req->getResponseCode } 同一サーバー内で、該当htmlが存在しないときは、サーバーは404を返すなど、$ret にしかるべきHTTPステータスコードを返してくれます。 ところが私の知識不足で不明なことがあります。 それは、そもそも該当URLのサーバー自体(ドメイン等)が存在しない時は、何がどういうコードを返してくれるのか、ということです。 先ほどの $ret には何も入ってきません。 このあたりご教授いただければ幸いです。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • HTTP_Requestで画像ファイルを取得、保存

    こんばんわ。 php_pearの/HTTP_Request/について質問させて下さい。 下のコードのように、画像ファイルのアドレスをHTTP_Requestへ渡して $picへ格納し、fopen以下でサーバーの指定フォルダへ保存 という内容のコードを書いたのですが、巧く動かずエラーが出てしまいます。 $picで受け取るデータに問題があるのではと推測して、その線で調べてはみたのですが、 どうもハッキリとしません。 何が原因で、どうすれば正常に動くのかをアドバイスして頂けないでしょうか。 宜しくお願いします。 ~~~~~~~~~~~~~略~~~~~~~~~~~~~~~ $req =& new HTTP_Request("画像のアドレス",$option); $req->addHeader("User-Agent", "My PEAR PROGRAM"); $req->addHeader("Referer", "http://www.yahoo.co.jp/"); if (!PEAR::isError($req->sendRequest())) { //$picへ画像ファイルを格納// $pic = $req->getResponseBody(); $read_fp = @fopen($pic,"r"); $write_fp= @fopen("保存先パス","w+"); while($line=fread($read_fp,filesize($pic))){ fwrite($write_fp,$line); } fclose($read_fp); fclose($write_fp); } =====================エラーメッセージ======================= Warning: filesize() [function.filesize]: stat failed for yOya Warning: fread(): supplied argument is not a valid stream resource Warning: fclose(): supplied argument is not a valid stream resource =====================システム情報補足======================= System Linux PHP Version 5.2.3 allow_url_fopen Off allow_url_include Off

    • ベストアンサー
    • PHP
  • PEAR拡張モジュールのダウンロード

    PHPで入力した情報を別のページに POSTするページを作成しています。 PEARのHTTP_Requestを使いたいのですが、 ダウンロード方法がわかりません。 http://pear.php.net/ ここからダウンロードできるという記事を見つけたので 早速バージョン1.4.4をダウンロードしました。 アーカイブを解凍すると中身はpackage.xmlになっていたのですが、 欲しいファイルはRequest.phpというようにphpファイルです。 Request.phpがダウンロードできると思っていたのですが、 package.xmlをどのように使用すればいいのかわかりません。 ダウンロードする場所は、 http://pear.php.net/package/HTTP_Request/download/ ここではないのでしょうか? 初心者過ぎて大変申し訳ないのですが、 どうかお助けください。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHPでのRAWデータの受け取り方

    こんにちわ。 PHPについて質問させて下さい。 PEARのHTTP_RequestのaddRawPostData()でXML文書をmessage bodyに突っ込んで POSTメソッドで投げて、受ける側ではPOSTで取得しているのですが、 $_POSTでmessage bodyを受け取った場合、 var_dump($_POST); 出力: array(1) { ["<entry_xmlns=\"ttp://purl_org/atom/ns#\">postのテスト</entry>"]=> string(0) "" } などとなり、 message bodyの内容が無条件に$_POSTのキーになり、 「空白」であるところが「_(アンダーバー)」に変換されてしまいます。 APIを通常のPOSTやGETデータでつついてレスポンスのXMLを受け取ってパース・・・というのはよくやっているのですが、 XMLで受け取るAPIをPHPで作った事が無かったのでどうにも知識不足です。 そもそもこのやり方でいいんだろうか。 どなたかご教授ください。

    • 締切済み
    • PHP
  • ロリポップのサーバでのPEARインストールについて

    ロリポップのサーバでPHP5.3でCakePHP2系を運用しています。 CakePHPのvendors内にPEARを入れていますが、 ローカル環境では動くのに、ロリポップ上でPEARがエラーになります。 ロリポップ上のCakePHP2内で、PEARを動かす方法が分かる方いたら教えて下さい。 phpinfo関数でinclude_pathを見ると、 ちゃんとインストールしたフォルダを認識しています。 使いたいモジュールはHTTP_REQUESTなのですが、 Class 'HTTP_Request' not found というエラーが出てしまいます。 宜しくお願いします。

    • ベストアンサー
    • PHP
  • XMLファイルをPHPで読み込むには?

    PHPとXMLを勉強しております。タイトル通りなのですが、どのようにすればよいのでしょうか? PHP4とPHP5ではやりかたが違うようなのですが・・・。 一応自分なりに調べてみたのですがphp5ではsimpleXML関数を使用すればできるようなのですが、私が使用しているサーバーがロリポップでして、PHP4ではどうすればいいのでしょうか。 PEARを使用するといった文章をよく観たのですが、さっぱりわからない状態です。 PEARの使い方を初心者でもわかりやすく書いてあるサイトはありませんでしょうか。できればPEARを使用せずにXMLを読み込む方法などもありましたら、ご助言をお願いいたします。

    • ベストアンサー
    • XML

専門家に質問してみよう