API Guzzle и Stack Exchange, ошибка разбора JSON_ERROR_UTF8

Я пытаюсь использовать API Stack Exchange с помощью Guzzle. Я столкнулся с проблемой, из-за которой я не могу получить ответ JSON: он, по-видимому, не работает при его синтаксическом анализе.

Вот мой код:

$client = new GuzzleHttp\Client();
$parameters = ['pagesize'=>'2','order'=>'desc','sort'=> 'activity','q'=>'laravel eloquent','site'=>'stackoverflow'];
$response = $client->get('http://api.stackexchange.com/2.2/search/advanced',['query' => $parameters ]);

Результирующий эффективный URL-адрес, который Guzzle создает правильный: если вы откроете ссылку в своем браузере, вы увидите, что она работает нормально и возвращает запрошенные данные.

Однако Guzzle выдает эту ошибку при попытке доступа к JSON с $response->json():

GuzzleHttp \ Exception \ ParseException
Невозможно проанализировать данные JSON: JSON_ERROR_UTF8 - неправильно сформированные символы UTF-8, возможно, неправильно закодированные

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


person Gagan    schedule 30.06.2014    source источник
comment
В настоящее время я использую версию PHP 5.5.3   -  person Gagan    schedule 30.06.2014
comment
Что, если вы возьмете wirehark и увидите точный запрос и ответ?   -  person zerkms    schedule 30.06.2014
comment
Пытался загрузить и установить wirehark для mac os, но он не отвечает.   -  person Gagan    schedule 30.06.2014


Ответы (1)


Хорошо, у меня работает следующий код.

 $client = new GuzzleHttp\Client();
    $parameters = ['pagesize'=>'2','order'=>'desc','sort'=> 'activity','q'=>'laravel eloquent','site'=>'stackoverflow'];
    $params = http_build_query($parameters);
    $request = $client->createRequest('GET', 'http://api.stackexchange.com/2.2/search/advanced?'.$params);
    $request->addHeader('Accept-Encoding','GZIP');
    $request->addHeader('Content-Type','application/json');
    $response = $client->send($request);
    var_dump($response->json());
person Gagan    schedule 30.06.2014