一、curl方式
function curl_post($url, $postData, $refcode = false, $refheader = false) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_POST, 1);
$postFields = http_build_query($postData);
curl_setopt($curl, CURLOPT_POSTFIELDS, $postFields);
$headers = addHttpHeader($url);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($curl, CURLOPT_TIMEOUT, 300);
if ($refheader) {
curl_setopt($curl, CURLOPT_HEADER, 1);
curl_setopt($curl, CURLINFO_HEADER_OUT, true);
} else {
curl_setopt($curl, CURLOPT_HEADER, 0);
}
curl_setopt($curl, CURLOPT_HTTPHEADER,array('Accept-Encoding: gzip, deflate'));
curl_setopt($curl, CURLOPT_ENCODING, 'gzip,deflate');
if (curl_exec($curl) === false) {
return "连接失败,Error:".curl_error($curl);
}
$result = curl_exec($curl);
$result = trim($result);
$result = mb_convert_encoding($result, 'utf-8', 'UTF-8,GBK,GB2312,BIG5');
$result = trim($result,chr(239).chr(187).chr(191));
$httpcode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
if ($refcode) {
$html = array("httpcode" => $httpcode, "result" => $result);
return $html;
} else {
return $result;
}
}
function addHttpHeader($url) {
$temp = parse_url($url);
$query = isset($temp['query']) ? $temp['query'] : '';
$path = isset($temp['path']) ? $temp['path'] : '/';
$header = array(
"POST {$path}?{$query} HTTP/1.1",
"Host: {$temp['host']}",
"Referer: http://{$temp['host']}/",
"Content-Type: application/x-www-form-urlencoded",
'Accept: application/json, text/javascript, */*; q=0.01',
'Accept-Encoding:gzip, deflate, br',
'Accept-Language:zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
'Connection:keep-alive', 'User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:83.0) Gecko/20100101 Firefox/83.0',
'X-Requested-With: XMLHttpRequest',
);
return $header;
}
二、file_get_contents方式
function file_post($url, $post_data,$refcode = false, $refheader = false) {
$postdata = http_build_query($post_data);
$options = array('http' => array('method' => 'POST', 'header' => 'Content-type:application/x-www-form-urlencoded', 'content' => $postdata, 'timeout' => 300
));
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
$result = trim($result);
$result = mb_convert_encoding($result, 'utf-8', 'UTF-8,GBK,GB2312,BIG5');
$result = trim($result,chr(239).chr(187).chr(191));
if ($refcode) {
$httpcode=$http_response_header[0];
if ($refheader) {
$header='';
foreach ($http_response_header as $key => $value) {
$header.=$value."\r\n";
}
$header.="\r\n";
$result=$header.$result;
}
$html = array("httpcode" => $httpcode, "result" => $result);
return $html;
} else {
return $result;
}
}