PHPでソケット通信で、HTTPリクエストを送りたいと思っております。

ちなみに、ホスト名はsmaf.jpでreq.cgi?c?id=idをGETで送ります。

ポケットアフィリエイトというものを使っており、成果の報告のためにその仕組みを入れなければならないのですが、全く分かりません。
ソースコードで、お教え頂けますと幸いです。
ちなみに、下記の関数で試してみましたが、NGでした。

function http_get( $url, $para='', $hb = false )
{
$url = parse_url( $url );
$query = array_key_exists( 'query', $url ) ? '?'.$url['query'] : '';

$req = "GET /". $para ." HTTP/1.0"."\r\n" .
"Host: ". $url['host'] ."\r\n".
"\r\n";

if( $fp = @fsockopen( $url['host'], 80, $rv->en, $rv->es, 20 ) )
{
socket_set_timeout( $fp, 2 ); # リクエストを送る #
fputs( $fp, $req );

while( ! feof( $fp ) )
$res.= fgets( $fp, 128 );
fclose( $fp );

$rt->head = ''; $rt->body = '';
if( preg_match( '/^((.*\r?\n)*?)\r?\n/', $res, $m ) )
{
$rt->head = $m[1];
$rt->body .= $res;
}
else
$rt->head = $res;
return $hb ? $rt : $rt->body;
}
return null;
}

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2007/05/14 17:36:14
  • 終了:2007/05/20 04:59:13

回答(2件)

id:studioes No.1

studioes回答回数522ベストアンサー獲得回数612007/05/14 18:26:20

ポイント35pt

 何を返したいんだかわからんから、とりあえずGETしてヘッダも丸ごと返すヤツで・・・

httpget('smaf.jp','/req.cgi?c?id=あいでぃ~');

function httpget($host, $addr){

$request = "GET {$addr} HTTP/1.1\r\nAccept: */*\r\nHost: {$host}\r\nConnection: close\r\n\r\n";

if($fp = fsockopen($host, 80)){

fwrite($fp, $request);

while (!feof($fp)) {

$response .= fgets($fp, 128);

}

fclose($fp);

return $response;

}

return false;

}

http://q.hatena.ne.jp/

id:kn1967 No.2

kn1967回答回数2915ベストアンサー獲得回数3012007/05/14 18:47:28

ポイント35pt

どこでNGになっているのか書いてないので、とりあえず

$header="GET " . $url . "?" . $para . " HTTP/1.0\r\n" . 

ではないかと思うけれど、どうしてもソケットを使わなければならないの?

$url = "http://smaf.jp/req.cgi?id=id";
$body = fopen($url, "r");
if (!$body) {
  失敗の時の処理
}

(UserAgentが必要な場合はini_setで事前に宣言しておくなどしておいてください。)

ではどう?

http://jp.php.net/fopen

id:makocan

皆様ありがとうございました!

2007/05/20 04:59:00

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません