我正在尝试将V2.2 of StackExchange api与 PHP 一起使用。我在Kriswallsmith的 buzz 库中使用 Symfony 项目。
当我尝试打印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();
返回以下内容:
如果您粘贴
https://api.stackexchange.com/2.2/answers?site=stackoverflow&sort=activity&
在浏览器中,它返回一个有效的JSON。
答案 0 :(得分:1)
我发现由于某种原因,内容未被解压缩:
$ curl https://api.stackexchange.com/2.2/answers
�VJ-*�/��LQ�210ЁrsS���S����3KR2��R
K3�RS�`J�sA�I�)��E@NIj�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"}
您应该能够使用PHP的gzuncompress
功能或稍微挖掘Buzz。