>CURL是一个非常强大的开源库,支持很多协议,包括HTTP、FTP、TELNET等,我们使用它来发送HTTP请求。 ## 流程 使用CURL的PHP扩展完成一个HTTP请求的发送一般有以下几个步骤: 初始化连接句柄; 设置CURL选项; 执行并获取结果; 释放VURL连接句柄。 ## 重点 使用PHP操作curl最重要的一点 curl_setopt — 设置 cURL 传输选项 curl_setopt()有非常多的设置选项。通过不同的设置,它可以通过灵活的选项设置可以实现很多功能,比如模仿get或post请求,根据URL前缀是“HTTP” 还是“HTTPS”自动选择是否加密发送内容;也可以伪造IP和来源等等。 以下链接是curl_setopt()手册 http://www.php.net/manual/zh/function.curl-setopt.php ## 一个好用的curl封装 我们在写 SOA 服务化项目的时候, 总是要定义许多 API 接口为功能提供服务, 那么这个时候 cURL 就发挥了它巨大的作用. 这里分享一下自己封装的 cURL 方法 ### 具体代码 /** * @param $url 请求网址 * @param bool $params 请求参数 * @param int $ispost 请求方式 * @param int $https https协议 * @return bool|mixed */ public static function curl($url, $params = false, $ispost = 0, $https = 0) { $httpInfo = array(); $ch = curl_init(); curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36'); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); if ($https) { curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // 对认证证书来源的检查 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); // 从证书中检查SSL加密算法是否存在 } if ($ispost) { curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $params); curl_setopt($ch, CURLOPT_URL, $url); } else { if ($params) { if (is_array($params)) { $params = http_build_query($params); } curl_setopt($ch, CURLOPT_URL, $url . '?' . $params); } else { curl_setopt($ch, CURLOPT_URL, $url); } } $response = curl_exec($ch); if ($response === FALSE) { //echo "cURL Error: " . curl_error($ch); return false; } $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); $httpInfo = array_merge($httpInfo, curl_getinfo($ch)); curl_close($ch); return $response; } ### 使用方法 // 发送请求 $result = self::curl('网址', '参数', true); // 收到的数据需要转化一下 $json = json_decode($result);