参数:$url 请求 URL string;$body array ;$header array; function postCurl($url,$body,$header,$type="POST"){ //1.创建一个curl资源 $ch = curl_init(); //2.设置URL和相应的选项 curl_setopt($ch,CURLOPT_URL,$url);//设置url //1)设置请求头 //array_push($header, ‘Accept:application/json‘); //array_push($header,‘Content-Type:application/json‘); //array_push($header, ‘http:multipart/form-data‘); //设置为false,只会获得响应的正文(true的话会连响应头一并获取到) curl_setopt($ch,CURLOPT_HEADER,0); // 设置超时限制防止死循环 //curl_setopt ( $ch, CURLOPT_TIMEOUT,5); //设置发起连接前的等待时间,如果设置为0,则无限等待。 curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,5); //将curl_exec()获取的信息以文件流的形式返回,而不是直接输出。 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //2)设备请求体 if (count($body)>0) { //$b=json_encode($body,true); curl_setopt($ch, CURLOPT_POSTFIELDS, $body);//全部数据使用HTTP协议中的"POST"操作来发送。 } //设置请求头 if(count($header)>0){ curl_setopt($ch,CURLOPT_HTTPHEADER,$header); } //上传文件相关设置 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_MAXREDIRS, 3); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);// 对认证证书来源的检查 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);// 从证书中检查SSL加密算 //3)设置提交方式 switch($type){ case "GET": curl_setopt($ch,CURLOPT_HTTPGET,true); break; case "POST": curl_setopt($ch,CURLOPT_POST,true); break; case "PUT"://使用一个自定义的请求信息来代替"GET"或"HEAD"作为HTTP请求。这对于执行"DELETE" 或者其他更隐蔽的HTT curl_setopt($ch,CURLOPT_CUSTOMREQUEST,"PUT"); break; case "DELETE": curl_setopt($ch,CURLOPT_CUSTOMREQUEST,"DELETE"); break; } //4)在HTTP请求中包含一个"User-Agent: "头的字符串。-----必设 //curl_setopt($ch, CURLOPT_USERAGENT, ‘SSTS Browser/1.0‘); //curl_setopt($ch, CURLOPT_ENCODING, ‘gzip‘); curl_setopt ( $ch, CURLOPT_USERAGENT, ‘Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)‘ ); // 模拟用户使用的浏览器 //5) //3.抓取URL并把它传递给浏览器 $res=curl_exec($ch); $result=json_decode($res,true); //4.关闭curl资源,并且释放系统资源 curl_close($ch); if(empty($result)) return $res; else return $result; }
时间: 2024-10-07 16:49:56