> 有的时候总会遇到一个“莫名其妙的问题”,复制链接明明能在浏览器上访问,而curl请求却总是返回false
,下面来分析以下原因或解决方法。
如以下代码为例:
public function curlHttps($url, $postdata=array(), $timeOut=5, $header=array()){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
if ($header){
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
}
curl_setopt($ch, CURLOPT_TIMEOUT, $timeOut);
if ($postdata){
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
}
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
$output = curl_exec($ch);
curl_close($ch);
return $output;
}
1、请求https网址
请求地址是https的,需要curl_exec($ch);
之前设置
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
2、暂时无法发现问题
可直接在curl_exec($ch);
之前加上
var_dump(curl_error($ch));
如果有问题即可直接打印出来。
3、curl请求链接含空格
这个是意外发现的,网上很多地方都没找到,还是无意中在对照了某某的api接口文档才发现的。
使用curl来请求数据时curl的url地址中的任何地方不能有空格存在,不然会返回一个你琢磨不透的false
比如: http://www.sanplit.cn/api/test?id=110&make=iPhone&model=iPhone 6s Plus
中参数model中含有空格,curl请求false,而直接浏览访问有效,这时候只需要将空格替换成“+”即可。如:
str_replace(\' \', \'+\', $url)
暂时就发现这三种,有更多建议或疑问的欢迎留言,感谢!