0

我正在尝试将StackExchange api 的 V2.2PHP一起使用。我正在将Symfony项目与 Kriswallsmith 的嗡嗡声库一起使用。

当我尝试打印 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。

4

1 回答 1

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。

于 2014-09-03T10:11:16.847 回答