PHPからPOSTリクエストを送信する3つの方法「curl、file_get_content、fsocket」

phpからpostリクエストを送信する方法、「curl」「 file_get_content」 「 fsocket」を利用してpostでデータを送信
PHPコード:

class Request{
  //curl方法
public static function post_curl($url, $post_data = ", $timeout = 5){
$ch = curl_init(); //cURL セッションを初期化する
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_POST, 1);
if($post_data != "){
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);

}
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_HEADER, false);
$file_contents = curl_exec($ch);
curl_close($ch); //cURL セッションを閉じ
return $file_contents;

}

//file_get_content方法
public static function post_file_get($url, $data){
$postdata = http_build_query(

$data

);

$opts = array('http’ =>

array(

'method’ => 'POST’,

'header’ => 'Content-type: application/x-www-form-urlencoded’,

'content’ => $postdata

)

);

$context = stream_context_create($opts);//ストリームコンテキストを作成する
$result = file_get_contents($url, false, $context);//ファイルの内容を全て文字列に読み込む
return $result;
}

//fsocket方法
public static function post_fsocket($host,$path,$query,$others="){
$post="POST $path HTTP/1.1\r\nHost: $host\r\n";
$post.="Content-type: application/x-www-form-“;
$post.="urlencoded\r\n${others}";
$post.="User-Agent: Mozilla 4.0\r\nContent-length: “;
$post.=strlen($query)."\r\nConnection: close\r\n\r\n$query";
$h=fsockopen($host,80);// インターネット接続をオープンする
fwrite($h,$post); //ファイルに書き込む
for($a=0,$r=";!$a;){
$b=fread($h,8192);
$r.=$b;
$a=(($b==")?1:0);

}

fclose($h);

return $r;

}
}

 

PHP

Posted by arkgame