phpのHttpRequestでサーバにsetBodyしたい方法とは?

このQ&Aのポイント
  • phpのHttpRequestを使ってサーバにデータを送る方法について教えてください。
  • 今回はphpのHttpRequestを使用して、サーバにJSON形式のデータを送りたいと思っています。
  • ただし、phpのバージョンは5.4または5.5です。
回答を見る
  • ベストアンサー

phpのHttpRequestを使いたい。

phpのHttpRequestでサーバにsetBodyしたいのですが、どのライブラリをどうインストールしたらいいでしょうか。 次のphpプログラムで、サーバにJSON形式のデータを送ろうと思っています。 $request = new HttpRequest("http://localhost/apiserver.php"); $request->setMethod(HTTP_METH_POST); $request->setBody(json_encode($info)); $request->send(); $response = $request->getResponseBody(); 上記のプログラムは、実績があり、間違っておりません。 しかし、”new HttpRequest”以降で処理が行われていません。 ”new HttpRequest”ができないと判断しています。 その”new HttpRequest”を実行するためのライブラリは一体なんでしょうか。 phpのバージョンは、5.4または5.5です。 ちなみに、次の2つのライブラリのそれぞれのphp_http.dllは試しましたが、うまくいきませんでした。 php_http-2.0.6-5.6-ts-vc11-x64 php_http-2.0.6-5.6-ts-vc11-x86 よろしくお願いします。

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

質問者が選んだベストアンサー

  • ベストアンサー
noname#244856
noname#244856
回答No.1

HttpRequestに拘る特別な理由がある…ということであれば気にしなくていいですが、cURLではダメなんでしょうか?cURLが使えない環境って逆に相当珍しいぐらいで、これであれば何もしなくても使える状態だと思います。 $ch = curl_init('http://localhost/apiserver.php'); curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_POSTFIELDS => json_encode($info), ]); $response = curl_exec($ch); 多分今回は関係ないですが参考程度に覚えておいてください↓ http://qiita.com/mpyw/items/c2d2f9cf67072e926721

jr3hv73edjwoe
質問者

お礼

調べてみたら、HttpRequestは利用できるバージョンが限られていることがわかりました。 ですから、curlを使うことにしました。 ありがとうございました。

jr3hv73edjwoe
質問者

補足

ありがとうございました。 curlでもできるようになりました。 これでこの作業は完結しました。 ところで、ここまで来たらHttpRequestもつかえるようにしたいとのですが、どなたかどうすれば使えるようになるのかわかる方がいましたら教えてください。 よろしくお願いします。

関連するQ&A

  • 【PHP,JavaScript】文字が誤変換される

    以下は、プログラムの一部でJavaScriptからPHPにJSONデータを送信する処理です。 引数を渡すJavaScript側(Extjsライブラリを利用)のプログラム // Ajaxリクエスト処理 Ext.Ajax.request({ url: "php/updatedata.php", success: handleSuccess, failure: handleFailure, params: { data: Ext.util.JSON.encode(data) } // パラメータをJSON形式にして送信 }); 配列dataの中身は「data[0] = 3,data[1] = パソコン」となっています。 Ext.util.JSON.encode(data)により配列dataをJSONに変換して 受信するPHP側のプログラム:updatedata.php JavaScriptで渡したJSONを$_REQUEST['data']で受信して中身を見ると以下のようになっています。 if (isset($_REQUEST['data'])) { $tmp = $_REQUEST['data']; 【受信したJSONデータの中身】 [{"id":"3","name":"繝代た繧ウ繝ウ"}] 「パソコン」という文字列が「繝代た繧ウ繝ウ」という文字列に変換されてしまっています。 Extjs側の「Ext.util.JSON.encode」が悪いのでしょうか、それともPHP側の「$_REQUEST」が悪いのでしょうか。はたまた何か別の原因があるのでしょうか。 ちなみに、環境は以下のようになっています。 WindowsXP,Windows7(両方とも同じ結果になってしまいました。) PHP5.3.1 Ext3.3.0 以上、よろしくお願い致します。

  • php5.16でjsonを使うには?

    http://www.dezinerfolio.com/dfgallery-2/free-flash-gallery こちらのFlashギャラリーを使用したくて苦戦しています。 サイトではphp5+と説明されているのですが、json関数を使用できないとうまくデータのやり取りができないようです。 なんとかphp5.16の環境でjsonを使えるように試しているのですが、 http://www123.ddo.jp/extwiki/?2.0%2Fjson_encode%E9%96%A2%E6%95%B0 という、json encodeを試してみてもだめでした。 これはphp4.xでjsonを使用する為のものみたいです。 php5.16でjson encodeを使用できるようなうまい方法はないでしょうか? よろしくお願い致します。

    • 締切済み
    • PHP
  • vscode + phpでブレイクしません。

    vscodeでphpのでバッグを行おうとしていますが、ブレイクが効きません。 バージョンは次の通りです。 vscode 1.70.1 PHP Version 7.4.29 ただ、launch.jsonが未作成のままだとブレイクします。作成するように警告が出ますので作成したところ機能しなくなりました。 xdebuggerのバージョンは次のところで確認しています。 https://xdebug.org/wizard なお、pho.ini、launch.jsonの設定は次の通りです。 php.ini [xdebug] zend_extension="c:\xampp\php\ext\php_xdebug-3.1.5-7.4-vc15-x86_64.dll" xdebug.remote_enable=yes xdebug.remote_autostart=yes xdebug.mode=debug xdebug.start_with_request = yes xdebug.remote_host = localhost xdebug.remote_port = 9003 launch.json "version": "0.2.0", "configurations": [ { "name": "Listen for Xdebug", "type": "php", "request": "launch", "port": 9003 }, アドバイスをいただけるとありがたいです。

    • 締切済み
    • PHP
  • PHPのHttpRequestモジュールについて

    HttpRequestモジュールを使って以下のようなコードを書いたのですが エラーの「unexpected T_DOUBLE_ARROW 」が出てうまくいきません。 どうやら$request->setHeadersのところの連想配列でエラーが出てるようなんですが どうやれば解決するのか分からず困っています。 ---------------------------------------------------------------------------- require_once 'HTTP/Request.php'; $request = new HTTP_Request(); $request->setURL("http://example.com"); $request->setMethod(HTTP_REQUEST_METHOD_POST); $request->setHeaders("Content-Type"=>"application/x-www-form-urlencoded"); $request->setHeaders("User-Agen"=>"Opera/9.80 (Windows NT 5.1; U; ja) "); print $request->getResponseBody(); ---------------------------------------------------------------------------- http://www.php.net/manual/ja/function.httprequest-setheaders.php のマニュアルを見ても問題が無いように思えます。 どなたかお詳しいかた教えてください

    • ベストアンサー
    • PHP
  • phpにてjsonの利用ができなくなりました

    phpにてjsonの利用ができなくなりました yum phpインストール後 peclにてjsonをインストールし動いておりました。 ある時点よりPHPのjsonのエラーが出るようになり、プログラムが動かなくなりました。 解決方法わかる方いらっしゃいましたら、ご教授お願い致します。 エラー: PHP Fatal error: Call to undefined function json_encode() やってみたこと:  yum php やphp-devel、pecl でjsonを入れなおしたり、  php.ini php.d/json.ini を記述してみたり、  jsonのtar.gzを落としてコンパイルしておいてみたり  としたのですが、動きません. その他状況: ・php -m にてjsonが表示されますが ・phpinfo()ではjsonの項目が表示されません 怪しい点: 利用できなくなった前後で yum update で全てのアップデートを行っています。 よろしくお願いいたします。

    • 締切済み
    • PHP
  • JSON の出力先ディレクトリの指定方法

    cakePHPの初心者です。 以下のようにPHPからJSON形式で、データファイルを出力したいと考えております。 $json = new Services_JSON; $encode = $json->encode($hoge); echo $encode; ですが、出力先ディレクトリの指定の仕方が分かりません。 ご存知の方、恐れ入りますが方法を教えて頂けますでしょうか?

    • ベストアンサー
    • PHP
  • 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
  • Perlで言う、LWP HTTPをPHPで

    PerlでのスクリプトをPHPに移行しようかと考えております。(勉強のため) それで、PerlのモジュールでいうLWPとHTTPに代わるクラスライブラリ(API)は、どれにあたるのでしょうか? 具体的には、LWP::UserAgentとHTTP::Requestです。 ※詳しくは、 my $wa = new LWP::UserAgent; my $req = new HTTP::Request(GET => $url); my $res = $wa->request($req); PHPのドキュメント(http://www.php.net/manual/ja/)を見たのですが、いまいちピンときませんでした。 参考URLで結構ですので、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • インストール: php-ntsにphp5apache2.dllがない

    よろしくお願いします。 PHPには、php-5.3.0-Win32-VC9-x86.zip、php-5.3.0-nts-Win32-VC9-x86.zipがありますが、nts版には何故「php5apache2.dll」が入ってないのでしょうか? httpd.confのLoadModuleでphp5apache2.dllのPATHを設定しますが、php5apache2.dllがないのでTS版から抜きだしてくる必要があります。 しかしNTS版に入れないのは、それなりの理由があると思うのです。 ISAPIを利用しない限りはNTS版インストールを推奨されているようですが、これだけでは理由がわかりません。 何かご存知の方おられましたら、是非 ご教授ください。 (環境)WindowsXP pro SP3、apache2.2.13、PHP 5.3.0 ActivePerl 5.10.1

    • ベストアンサー
    • PHP
  • PHPでグラフ描画したい

    レンタルサーバーでPHPプログラムを運用しいるのですが、今度グラフを表示させたいと思っております。 数あるPHPのグラフライブラリの中から、“JpGraph”が使えるかどうか試してみたのですが、私が借りているレンタルサーバーでは“imagettfbbox関数”が使えないため、途中でエラーが発生して使えません。 X,Y軸のタイトルなどに漢字も表示させたいのですが、何か良い手段はありますでしょうか? ちなみに、“PHPlot”も試し、とりあえずサンプルプログラムのグラフは表示されたので使えると思うのですが、漢字の表示のさせ方がわかりません。御存知の方はいらっしゃいますか? PHPはVer4.4.4です。 MySqlのVer4.0.24も使用しております。

    • ベストアンサー
    • PHP