PHP中发起http请求有哪几种方式?
答案
curl
方式stream
流的方式socket
方式
答案解析
1.cURL
curl发送Post请求:
$url = "http://localhost/post_output.php";
$post_data = array (
"foo" => "bar",
"query" => "Nettuts",
"action" => "Submit"
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1); // 我们在POST数据哦!
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); // 加上POST变量
$output = curl_exec($ch);
curl_close($ch);
echo $output;
2.stream流的方式
stream_context_create
作用:创建并返回一个文本数据流并应用各种选项,可用于fopen()
, file_get_contents()
等过程的超时设置、代理服务器、请求方式、头信息设置的特殊过程。
以一个 POST 请求为例:
function post($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;
}
3.socket方式
使用套接字建立连接,拼接 HTTP 协议字符串发送数据进行 HTTP 请求。
一个 GET 方式的例子:
$fp = fsockopen("www.example.com", 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
$out = "GET / HTTP/1.1\r\n";
$out .= "Host: www.example.com\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
while (!feof($fp)) {
echo fgets($fp, 128);
}
fclose($fp);
}
本文介绍了发送 HTTP 请求的几种不同的方式。