- PR -

PHPでGET送信する方法

投稿者投稿内容
ポーター
ベテラン
会議室デビュー日: 2005/02/03
投稿数: 50
投稿日時: 2005-08-24 19:01
PHPを利用してGET送信することは可能でしょうか?
たとえば、www.xxx.jpのa.aspxページに対して

PHPでhttp://www.xxx.jp/a.aspx?e=OKのようなGETの
送信をおこない、「http 200 OK」の戻り値を取得したいと
考えております。どのようにしたら実現することが可能でしょうか?
PHPは関数が豊富に用意されていると聞いていますが関数などは
ありますでしょうか?

よろしくお願いいたします。
Mattun
ぬし
会議室デビュー日: 2004/08/10
投稿数: 1391
投稿日時: 2005-08-25 10:33
引用:

PHPを利用してGET送信することは可能でしょうか?


・送信側
「PHPにて生成されたHTMLページからGET送信したい」んであれば、
それこそPHP云々以前のHTMLのFORMの話です。

・受信側
GET変数で受け取れます。
今回の例なら$_GET['e']。
「PHP GET 値 取得」あたりをキーワードに、PHPのマニュアルなりGoogleなりで
検索すれば、答えにたどり着くのがそんなに難しいとは思えません。
要するに、自力で調べましたか?って言いたい。
なおこ(・∀・)
大ベテラン
会議室デビュー日: 2004/04/08
投稿数: 174
お住まい・勤務地: 東京都
投稿日時: 2005-08-25 10:44
引用:

コデトンさんの書き込み (2005-08-24 19:01) より:
PHPを利用してGET送信することは可能でしょうか?
たとえば、www.xxx.jpのa.aspxページに対して

PHPでhttp://www.xxx.jp/a.aspx?e=OKのようなGETの
送信をおこない、「http 200 OK」の戻り値を取得したいと
考えております。どのようにしたら実現することが可能でしょうか?
PHPは関数が豊富に用意されていると聞いていますが関数などは
ありますでしょうか?

よろしくお願いいたします。


お世話になります。

PHPでHTTPヘッダを取得したい。
と言う事ですよね?

↓このあたりが参考になるんではないでしょうか。
http://php.s3.to/man/wrappers.http.html

[追記]
GET送信についてはMattunさんに同意です。

[ メッセージ編集済み 編集者: なおこ(・∀・) 編集日時 2005-08-25 10:48 ]
がるがる
ぬし
会議室デビュー日: 2002/04/12
投稿数: 873
投稿日時: 2005-08-25 11:17
どもです。がると申します。
引用:

Mattunさんの書き込み (2005-08-25 10:33) より:
引用:

PHPを利用してGET送信することは可能でしょうか?


・送信側
「PHPにて生成されたHTMLページからGET送信したい」んであれば、
それこそPHP云々以前のHTMLのFORMの話です。


[/quote]
んっと。コデトンさんがなさりたいのは、そうではないように読める
のですがいかがでしょうか?

コデトンさんが書かれているのは
「PHPのプログラム中で 別CGI(aspx)を叩いてその結果を受け取りたい」
という風に読めるのですが。
つまり、コードっぽく書くと
コード:
  // パラメタ作成
  $param = XXX;
  // URL 確定
  $url = "http://www.foo.com/hogehoge.aspx?" . param;

  // 多分ここのAPIがあるかを聞きたいcall
  $ret = send_http_get($url);


こんな感じではないでしょうか?

で、…自分はよく知らないです(苦笑
C++とかだと、ストレートにsocketで扱っちゃうのですが。
で、PerlだとCPANでいくつかモジュールがあるのですが。
PHPだと…どうなんでしょ?

PHPに詳しい方、フォローよろしくです。


ポーター
ベテラン
会議室デビュー日: 2005/02/03
投稿数: 50
投稿日時: 2005-08-25 11:19
Mattun様 なおこ様 がるがる様
お返事ありがとうございます。

説明不足でした。
分かりにくい説明になりますが、
あるサイトのa.cgiからhttpsにより今回GET送信を行わせたいb.phpが
が呼ばれます。b.phpはa.cgiからある値を取得し、その値をGET送信(http)
で別のサーバにあるxxx.aspxに対して送信し、xxx.aspxから「http 200 OK」
を取得します。(b.phpはxxx.aspxから応答を取得するまで待ち状態になります。)
b.phpはxxx.aspxからの応答を取得後a.cgiにたいしてhttpsで応答を返すこと
を行わせたいと考えております。
普通であればこんな面倒な事をする必要はないのですが今回の案件上
どうしても必要となります。PHP言語を利用した開発を行った事が無いため
このようの事ができるのかも知りたいと思います。

よろしくお願いいたします

[ メッセージ編集済み 編集者: コデトン 編集日時 2005-08-25 11:20 ]
コナン
ベテラン
会議室デビュー日: 2005/01/31
投稿数: 98
投稿日時: 2005-08-25 12:01
こんにちわ。

PHPにもソケット関数というやつがあるようです。
「PHP ソケット関数」で検索したら出てきました。

リクエストを送ってからレスポンスを受け取るまでの例が載ってたので、
ほとんどそのままで使えそうです。
ぼんじぃ
ベテラン
会議室デビュー日: 2004/05/21
投稿数: 70
投稿日時: 2005-08-25 14:07
こんにちは

この辺にいろいろ載っているのでお求めのものを探してみてください。
http://www.php.net/manual/ja/index.php

レスポンスのヘッダだけの取得であるならば以下の関数が使えると思われます。
http://www.php.net/manual/ja/function.get-headers.php
常連さん
会議室デビュー日: 2004/04/06
投稿数: 38
お住まい・勤務地: 大阪
投稿日時: 2005-08-25 16:56
fsockopenを使いGETでデータ送信し、レスポンスを受信してみました。
参考になりますでしょうか。

<?php
$server="www.hogehoge.com";
$port="80";
$timeout="5";

$header="GET http://".$server."/?a=10 HTTP/1.0\r\n";
$header.="\r\n\r\n";

$fp=fsockopen($server,$port,$errno,$errstr,$timeout);

if($fp)
{
 fwrite($fp, $header);

 $reply='';

 while(!@feof($fp))
 {
  $line=fgets($fp, 4096);
  $reply.=$line;
 }
}
fclose($fp);

var_dump($reply);
?>



スキルアップ/キャリアアップ(JOB@IT)