Curl возвращает пустой ответ на первый вызов API, но возвращает ответ на второй вызов - PullRequest
0 голосов
/ 03 июля 2019

Я использую 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, поведение аналогично.

Когда я тестирую его с почтальоном, он работает просто отлично.

Почему он не ждет ответа и не возвращает его мне, а скорее посылает мне пустую страницу в первый рази только после перезагрузки страницы он возвращает правильный ответ?

Редактировать: Возвращение JSON довольно велико, поэтому для его возврата серверу обычно требуется около 1,5-2 секунд

1 Ответ

0 голосов
/ 03 июля 2019

Похоже, это проблема с сервером, к которому я пытаюсь подключиться, и я ничего не могу сделать, кроме этого обходного пути:

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...