PHP Curl http код 100 и сбой

Я пытаюсь использовать веб-сервис с php curl, но получаю http-код "100" и ошибку "Ошибка Recv: соединение было сброшено". Я тестировал веб-сервис с расширением Google Chrome "Почтальон-клиент REST "И это прекрасно работает. Я искал этот http-код, и похоже, что сервер ожидает данные запроса тела, но я не знаю, что он ожидает от меня, поскольку я не публикую никаких данных, только заголовки.

Мой код выглядит так:

error_reporting(-1);

    $header = array('Content-Length: 1831', 'Content-Type: application/json', 'Authorization: '. $authorization, 'Authorization-Admin: '. $authorization_admin);
    $url = 'http://api.bookingreports.com/public/1/analytics/reports/departures';


    $ch = curl_init($url);

    curl_setopt($ch, CURLOPT_POST, true); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLINFO_HEADER_OUT, true);


    $result = curl_exec($ch); 
    $errorCode = curl_getinfo($ch, CURLINFO_HEADER_OUT);
    $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

    echo $result;
    echo curl_error($ch);
    echo $errorCode;
    echo $httpcode;

    //log_message('debug', 'HTTP HEADER '. $errorCode); 
    curl_close($ch);

и заголовок, который я отправляю, выглядит так:

POST /public/1/analytics/reports/departures HTTP/1.1
Host: api.bookingreports.com
Accept: */*
Content-Length: 1831
Content-Type: application/json
Authorization: myauthcode
Authorization-Admin: myauthadmin
Expect: 100-continue

1 ответ

Решение

Вы отправляете неправильно Content-Length значение. Вот почему сервер ожидает тело запроса. Потому что вы не отправляете никаких данных, Content-Length должен быть установлен в 0,

$header = array('Content-Length: 0', 'Content-Type: application/json', 'Authorization: '. $authorization, 'Authorization-Admin: '. $authorization_admin);

Когда вы решите составить заголовок запроса вручную, убедитесь, что Content-Length установлено правильное значение.

Другие вопросы по тегам