Ingresso API {"error_message": "Вы должны поддерживать \ u0027gzip \ u0027, чтобы использовать F13"} - PullRequest
0 голосов
/ 04 июля 2018

URL-адрес API =, я пытаюсь реализовать: https://docs.ingresso.co.uk/#basic-booking-flow

Мой код для OctoberCMS с объектом GuzzleHttp \ Client.

    $credentials = base64_encode('demo:demopass');
    $client = new Client();
    $request_url = 'https://demo.ticketswitch.com/f13/events.v1/';
    $response = $client->request('GET', $request_url, [
        'headers' => ['Accept' => 'application/json','Authorization' => 'Basic ' . $credentials,],
        'auth'    => ['demo', 'demopass'],
        'timeout' => 120
    ])->getBody()->getContents();

    echo "<pre>";
    print_r($response);
    die();

Ошибка, полученная при отправке запроса: enter image description here

Я читаю все предложенные вопросы, в то время как я добавляю свое название для вопроса, и нет никакой подсказки или помощи относительно проблемы ... Помощь .....

Примечание: учетные данные Api может использовать любой пользователь или разработчик,

1 Ответ

0 голосов
/ 04 июля 2018

Ошибка указывает на запрос must gzip: «Вы must support gzip [для использования этого API]».

Это контролируется с помощью заголовка Accept-Encoding , отправляемого на сервер:

HTTP-заголовок запроса Accept-Encoding сообщает, какую кодировку содержимого, обычно алгоритм сжатия, может понять клиент.

Сервер применяет это, чтобы обеспечить клиентам экономию полосы пропускания за счет использования сжатия при использовании API. Это может снизить расходы на хостинг и / или улучшить производительность запросов. Документация F13 просто отмечает, что « gzip должен использоваться для всех запросов ».

Использование включения сжатия транспорта gzip описано в документации Параметры запроса Guzzle :

// Request gzipped data and automatically decode/decompress it
$client->request('GET', '/foo.js', [
    'headers'        => ['Accept-Encoding' => 'gzip'],
    'decode_content' => true  // default is true, added to be explicit
]);

или, более просто

// Pass "gzip" as the Accept-Encoding header and automatically decode/decompress
$client->request('GET', '/foo.js', ['decode_content' => 'gzip']);

Когда [decode_content установлен] в строку, байты ответа декодируются, а строковое значение, предоставленное параметру decode_content, передается в качестве заголовка Accept-Encoding запроса.

...