转载自:http://www.oschina.net/code/snippet72951633065
第四种方法转载自:http://blog.sina.com.cn/s/blog_8155e74d0101gunl.html
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; } }