人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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;
}


●質問者: makocan
●カテゴリ:インターネット ウェブ制作
✍キーワード:.jp BODY CGI ES FP
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● studioes
●35ポイント

何を返したいんだかわからんから、とりあえず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/


2 ● kn1967
●35ポイント

どこで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

◎質問者からの返答

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ