QA@IT

phpにおけるHTTP通信

10167 PV

java servletでHTTP通信を行うには以下のようなコードを書くと思います。

// POST先のURL設定
URL url = new URL("http://localhost/test");

// 接続用HttpURLConnectionオブジェクト作成
HttpURLConnection connection = (HttpURLConnection)url.openConnection();

// 出力できるようにする
connection.setDoOutput(true);

// リクエストメソッドをPOSTに設定
connection.setRequestMethod("POST");

// POSTするパラメータの文字列設定
String parameterString = new String("param1=param1&param2=param2");

// 出力ストリーム作成
PrintWriter printWriter = new PrintWriter(connection.getOutputStream());
// 生成したパラメータをPOST
printWriter.print(parameterString);
// 出力ストリーム閉じる
printWriter.close();

// 入力ストリーム作成してPOSTのレスポンス取得
BufferedReader bufferReader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF8"));
String postResponseStr = new String();
String str;
// 入力ストリームから1行ずつ読み込む
while ((str = bufferReader.readLine()) != null) {
    postResponseStr = postResponseStr + str;
}

...
}

このように、phpにてパラメータの送信と受信を実現したいのですが、どうしたらよいのでしょうか?
1つ重要な問題がありまして、phpからjava servletへのパラメータ送信をしたいのです、事情により。
phpは少ししか使ったことがないので困っています。ぜひ教えて頂きたいです。

  • 今一つ聞きたいことがはっきりしないのですが、phpでHTTP POSTしたいという事ですか? -
  • はい!phpでHTTP POSTをして、javaのdoPostメソッドでパラメータを受け取りたいんです。 -

回答

こんな感じでしょうか。

$url = 'http://localhost/test';
$data = array(
    'param1' => 'param1',
    'param2' => 'param2',
);
$options = array('http' => array(
    'method' => 'POST',
    'content' => http_build_query($data),
));
$contents = file_get_contents($url, false, stream_context_create($options));

参考までに
http://www.programming-magic.com/20080226023511/

編集 履歴 (0)
  • 回答ありがとうございます。私もこのように実装したのですが、java servlet側のdoPostで上手く受け取れませんでした。 -
ウォッチ

この質問への回答やコメントをメールでお知らせします。