$response = curl_exec($ch),curl 返回false的问题


分类:PHP 作者:myerob 标签:curl_exec curl 阅读:75 收藏
导读:
1、请求https网址请求地址是https的,需要curl_exec($ch);之前设置curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);curl_set…

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

代码如下:

//传送json文件--------------
function postJson($url,$jsonStr)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonStr);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        'Content-Type: application/json; charset=utf-8',
        'Content-Length:'.strlen($jsonStr)
    ));
    //---https------
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    //---https------
    //var_dump(curl_error($ch));
    $response = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    return array($httpCode, $response);
}

相关推荐