cURL不会等待回应

时间:2015-09-04 11:55:58

标签: php curl

我正在尝试使用cURL for PHP从API获取数据。 当我执行以下脚本时,cURL似乎没有等待请​​求。

它立即返回空字段,该字段无法填充。

function request($cityName)
  {
    $key = "abc";

    $api = "https://...?api-key=$key&format=json&city=$cityName";
    $api = urldecode(trim($api));

    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $api);
    curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 0);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_USERAGENT, 'abc.com');

    $ret = curl_exec($curl);
    $response = json_decode($ret);

    var_dump($response);
    curl_close($curl);
  }

3 个答案:

答案 0 :(得分:0)

试试这个,不要使用urldecode

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_ENCODING, '');
curl_setopt($curl, CURLOPT_USERAGENT, 'abc.com');

$server_output = curl_exec($ch);
curl_close($ch);
print_r($server_output);

答案 1 :(得分:0)

OAuth扩展使用curl发出请求。默认情况下,CURL通常会验证SSL证书,以查看其是否为已接受的CA颁发的有效证书。为此,curl使用一组捆绑的CA证书。

您可以禁用SSL检查($ oauth-> disableSSLChecks())。或者确保您拥有当前版本的卷曲。 More information关于卷曲认证验证。

答案 2 :(得分:-1)

由于低速连接,cURL有可能取消请求。

如果CURLOPT_LOW_SPEED_TIME秒的平均传输速率低于CURLOPT_LOW_SPEED_LIMIT字节/秒,则会发生这种情况。

尝试以下方法:

foreach

根据您的要求更改上述选项的值。