一,curl
cURL 是一个用来传输数据的工具,支持多种协议,如在 Linux 下用 curl 命令行可以发送各种 HTTP 请求。PHP 的 cURL 是一个底层的库,它能根据不同协议跟各种服务器通讯,HTTP 协议是其中一种。
post请求
-
public static function http_post($url,$data_string,$timeout = 60) -
{ -
//curl验证成功 -
$ch = curl_init($url); -
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); -
curl_setopt($ch, CURLOPT_POSTFIELDS,$data_string); -
curl_setopt($ch, CURLOPT_RETURNTRANSFER,true); -
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);//// 跳过证书检查 -
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); -
curl_setopt($ch, CURLOPT_HTTPHEADER, array( -
'Content-Type: application/json', -
'Content-Length: ' . strlen($data_string) -
)); -
$result = curl_exec($ch); -
if (curl_errno($ch)) { -
print curl_error($ch); -
} -
curl_close($ch); -
return $result; -
}
GET请求
public function doCurlGetRequest($url,$data,$timeout = 50){
if($url == "" || $timeout <= 0){
return false;
}
$url = $url.'?'.http_build_query($data);
$con = curl_init((string)$url);
curl_setopt($con, CURLOPT_HEADER, 0);
curl_setopt($con, CURLOPT_RETURNTRANSFER,1);
curl_setopt($con, CURLOPT_TIMEOUT, (int)$timeout);
$output = curl_exec($con);
//释放curl句柄
curl_close($con);
return $output;
}
1,curl请求http
$url = '//www.jb51.net';
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HEADER, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($curl);
curl_close($curl);
var_dump($data);
2,curl请求https
$url = 'https://www.jb51.net';
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HEADER, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);//这个是重点。
$data = curl_exec($curl);
curl_close($curl);
var_dump($data);
/**当请求https的数据时,会要求证书,这时候,加上下面这两个参数,规避ssl的证书检查
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // https请求 不验证证书和hosts
**/
二,stream流的方式
stream_context_create 作用:创建并返回一个文本数据流并应用各种选项,可用于 fopen(), file_get_contents() 等过程的超时设置、代理服务器、请求方式、头信息设置的特殊过程。
**详细介绍地址www.jb51.net/article/68891.htm
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;
}
三,socket方式
使用套接字建立连接,拼接 HTTP 报文发送数据进行 HTTP 请求。
一个 GET 方式的例子:
<?php
$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请求的方式。一是curl,它是传输数据工具,支持多协议,在Linux下可用命令行发送HTTP请求,PHP的cURL能与服务器通讯,还给出了curl请求http和https的代码示例;二是stream流方式,可用于设置超时、代理等,此外还提到了socket方式。
1464

被折叠的 条评论
为什么被折叠?



