首先来看一个封装的curl函数
function request_post($url = '', $param = '') {
if (empty($url) || empty($param)) {
return false;
}
$postUrl = $url;
$curlPost = $param;
$curl = curl_init();//初始化curl
curl_setopt($curl, CURLOPT_URL,$postUrl);//抓取指定网页
curl_setopt($curl, CURLOPT_HEADER, 0);//设置header
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上
curl_setopt($curl, CURLOPT_POST, 1);//post提交方式
curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost);//提交的参数
$data = curl_exec($curl);//运行curl
curl_close($curl);
return $data;
}
调用的时候返回结果为bool(false)
我们在curl_exec
函数前面通过curl_error($curl)
获取错误也是 string(0) ""
空字符串。
最后发现自己调用的api的接口地址是ssl
协议的,然后加上下面两个就可以了
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
如果curl
请求的地址中含有空格也会返回false
的,这块也要格外注意。
之前还遇到过一个返回false
打印curl_error($curl)
得到的是如下错误
string(39) "Problem (2) in the Chunked-Encoded data" bool(false)
这个错误的解决办法设置curl使用的HTTP协议版本,就是加上下面这句
//CURL_HTTP_VERSION_1_0 (强制使用 HTTP/1.0)
//CURL_HTTP_VERSION_1_1 (强制使用 HTTP/1.1)。
curl_setopt($curlp, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
以上所述是小编给大家介绍的php中curl返回false的解决办法详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
您可能感兴趣的文章:- PHP CURL中传递cookie的方法步骤
- PHP CURL使用详解
- PHP设置images目录不充许http访问的方法
- PHP获取访问页面HTTP状态码的实现代码
- php使用curl访问https示例分享
- PHP屏蔽蜘蛛访问代码及常用搜索引擎的HTTP_USER_AGENT
- php的curl携带header请求头信息实现http访问的方法