同步请求
/**
* Curl模拟浏览器提交
* @param unknown $url
* @param string $data
* @return mixed
*/
public function https_request($url, $data = null)
{
$curl = curl_init();
//curl_setopt($curl, CURLOPT_PROXY, 'http://192.168.1.1:8080'); //代理
//curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/4.0'); //模拟浏览器
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
if (!empty($data)) {
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
}
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($curl);
curl_close($curl);
return $output;
}
异步请求
/**
* 20190401php异步请求接口,post提交
* @author shaoyuyuan <305400706@qq.com>
* @param $url 接口路径
* @param $param 内容
* @param $timeout 设置连接的时限,单位为秒
* @param $host 主机地址
* @param $path 文件
* @param $port 端口
* @param $errno 如果errno的返回值为0,而且这个函数的返回值为FALSE,
* 那么这表明该错误发生在套接字连接(connect())调用之前,
* 导致连接失败的原因最大的可能是初始化套接字的时候发生了错误。
* @param $errstr 错误信息将以字符串的信息返回。
*/
public function syncRequest($url, $param=array(),$timeout =10)
{
//解析拆分url
$urlParmas = parse_url($url);
$host = $urlParmas['host'];
$path = $urlParmas['path'];
$port = isset($urlParmas['port'])? $urlParmas['port'] :80;
$errno = 0;
$errstr = '';
$fp = fsockopen($host, $port, $errno, $errstr, $timeout);
$poststring = isset($param)? http_build_query($param) : '';
if(!$fp){
//error tell us
echo "$errstr ($errno)\n";
}else{
//send the server request
fputs($fp, "POST $path HTTP/1.1\r\n");
fputs($fp, "Host: $host\r\n");
fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
fputs($fp, "Content-length: ".strlen($poststring)."\r\n");
fputs($fp, "Connection: close\r\n\r\n");
fputs($fp, $poststring . "\r\n\r\n");
//loop through the response from the server
// while(!feof($fp)) {
// echo fgets($fp, 4096);
// }
//close fp - we are done with it
fclose($fp);
}
}
有header的请求
/**
* Curl模拟浏览器提交
* @param unknown $url 请求地址
* @param string $data 请求参数
* @param string $header 请求header
* @return mixed
*/
public function https_request($url, $data = null, $header = [])
{
$curl = curl_init();
//curl_setopt($curl, CURLOPT_PROXY, 'http://192.168.1.1:8080'); //代理
//curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/4.0'); //模拟浏览器
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
// 设置请求头
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
if (!empty($data)) {
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
}
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($curl);
curl_close($curl);
return $output;
}