Curl在第一个api调用上返回空响应,但在第二个调用上返回响应

时间:2019-07-03 15:46:33

标签: php api curl

我使用curl像这样对API进行调用:


$curl = curl_init();

if (isset($_COOKIE['session'])) {
    curl_setopt($curl, CURLOPT_COOKIE, 'session=' . $_COOKIE['session']);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_URL, $query_url);
    $result = curl_exec($curl);
}
else {
    $result = 'Cookie is expired';
}
curl_close($curl);

print $result;

然后我运行此PHP文件进行测试,并且在测试过程中加载该文件时,我什么也没有收到,当我重新启动页面时,我得到了所需的数据。当我将其与javascript一起使用时,行为类似。

当我用Postman测试它时,效果很好。

为什么它不等待响应然后将其返回给我,而是第一次向我发送空页面,并且仅在页面重新加载后才返回正确的响应?

编辑:JSON返回非常大,因此通常需要一台服务器大约1.5-2秒才能返回

1 个答案:

答案 0 :(得分:0)

似乎这是我尝试连接的服务器的问题,除此解决方法外,我无能为力:

if (curl_getinfo($curl, CURLINFO_HTTP_CODE) == 0) { $result = curl_exec($curl); }

这是最后的摘录:

$curl = curl_init();

if (isset($_COOKIE['session'])) {
    curl_setopt($curl, CURLOPT_COOKIE, 'session=' . $_COOKIE['session']);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_URL, $query_url);
    $result = curl_exec($curl);
    if (curl_getinfo($curl, CURLINFO_HTTP_CODE) == 0) {
        $result = curl_exec($curl);
    }
}
else {
    $result = 'Cookie is expired';
}
curl_close($curl);

print $result;