2014-09-03 3 views
0

Я пытаюсь использовать V2.2 of StackExchange api с PHP. Я использую проект Symfony с помощью Kriswallsmith's buzz библиотека.json_decode и StackExchange api

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

Это часть кода, где я показываю эту проблему:

echo "The url: "; 
var_dump($url); 
var_dump($response); 
$content = $response->getContent(); 
echo "Json decode's content: "; 
var_dump(json_decode($content, true)); 
echo "The error is"; 
switch(json_last_error()) { 
    case JSON_ERROR_DEPTH: 
     echo ' - Maximum stack depth exceeded'; 
     break; 
    case JSON_ERROR_CTRL_CHAR: 
     echo ' - Unexpected control character found'; 
     break; 
    case JSON_ERROR_SYNTAX: 
     echo ' - Syntax error, malformed JSON'; 
     break; 
    case JSON_ERROR_STATE_MISMATCH: 
     echo ' - Invalid or malformed JSON'; 
     break; 
    case JSON_ERROR_UTF8: 
     echo ' - Malformed UTF-8 characters, possibly incorrectly encoded'; 
     break; 
} 

die(); 

Это возвращает следующее:

enter image description here

Если вставить

https://api.stackexchange.com/2.2/answers?site=stackoverflow&sort=activity& 

в браузера, он возвращает действительный JSON.

ответ

1

Это происходит со мной, что по какой-то причине содержание не ungzipped:

$ curl https://api.stackexchange.com/2.2/answers 
�VJ-*�/��LQ�210ЁrsS���S����3KR2��R 
            K3�RS�`J�sA�I�)��[email protected]�R-g��PP 

$ curl https://api.stackexchange.com/2.2/answers | gzip -d 
{"error_id":400,"error_message":"site is required","error_name":"bad_parameter"} 

Вы должны быть в состоянии использовать gzuncompress функции PHP или копать Buzz немного.

+1

Это причина, но функция 'gzuncompress' все еще падала. Это правильный метод/ответ на мой вопрос. Спасибо;) http://stackoverflow.com/a/10105319/2359967 – 2014-09-03 15:55:23

+0

@benatespina, ну, на самом деле HTTP-клиент должен сам разработать такие технические вещи: он может читать заголовки, не правда ли? – kix