class Request{
public function curlPost($url = '', $postData = '', $options = array())
{
if (is_array($postData)) {
$postData = http_build_query($postData);
}
$ch = curl_init();
$this_header = array("content-type: application/x-www-form-urlencoded; charset=UTF-8");
curl_setopt($ch,CURLOPT_HTTPHEADER,$this_header);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
curl_setopt($ch, CURLOPT_TIMEOUT, 5); //设置cURL允许执行的最长秒数
if (!empty($options)) {
curl_setopt_array($ch, $options);
}
//https请求 不验证证书和host
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
public static function post2($url, $data){//file_get_content
$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;
}
public static function post3($host,$path,$query,$others=''){//fsocket
$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;
}
// 发送post请求
// @param string $url 请求地址
// @param array $post_data post键值对数据
// @return string
public function post4($url, $post_data){
// http_build_query()
// 生成URL-encode之后的请求字符串
//
// 备注:
// php5.3的分隔符用的是&,如果目标服务器也是php5.3,那么就不会出错。
// 但是如果目标服务器是java的tomcat或者别的,那么&可能就会处理错误。
// 以下的形式能够避免错误
// http_build_query($post_data, '', '&');
// stream_context_create()
// 创建并返回一个流的资源
//$username='username';
//$password='password';
$postData = http_build_query($post_data, '', '&');
$options = array(
'http' =>array(
'method'=>"POST",
'header'=>"Accept-language: en\r\n".
"Content-type: application/x-www-form-urlencoded;Charset=utf-8\r\n",
'content' => $postData,
'timeout' => 15 * 60,//超时时间(单位:s)
)
);
//创建并返回一个流的资源
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
return $result;
}
}