来自使用curl的ZF2 api调用的奇怪编码

mut*_*ron 5 encoding curl zend-framework2

我从zf2 api调用中得到了一个奇怪的编码问题.我已经验证了api在内部工作,并且它应该发送回来的响应来自api例程,该例程采用图像文件并裁剪它:

$result = new ViewModel(array('output'=>$output, 'response'=>json_encode($response)));
Run Code Online (Sandbox Code Playgroud)

在结果发送之前转储$ result,如下所示:

[output] => json
[response] =>{"data":"http:\/\/dev.xxxxx.com\/tools\/files\/temporary_files\/f16da1965e4d0c487ae7692f4b51558b917c238e.1","status":"OK"}
Run Code Online (Sandbox Code Playgroud)

但我回来的实际反应是这样的:

^_<8b>^H^@^@^@^@^@^@^C%ÍM
^B!^T^@໸^Nß¹Â,:B<õI<82><8e><83>¾<82><88>î^Ðò[}o<96><80><80>­ìNt¬B4(5^R>y*<93>F   ¥ï<ö&¨÷:E.^U§ lG^_0^·¿³4    ¤7^ZU:Gå, 5~É*h©µ^K^Ú¸\^\rÉNl^RÐcþÖëÆ>_Id»'<83>^@^@^@
Run Code Online (Sandbox Code Playgroud)

以下是我使用curl调用api的方法:

    $client = new Client($api_url);
    $adapter = new Curl();
    $adapter->setCurlOption(CURLOPT_SSL_VERIFYPEER, false);
    $client->setAdapter($adapter);

    $request = new Request();
    $request->setUri($api_url);
    $request->setMethod(\Zend\Http\Request::METHOD_POST);
    $request->setContent($postString);

    $response = $client->dispatch($request);
    $responseContent = $response->getContent();
Run Code Online (Sandbox Code Playgroud)

看起来编码的部分是$ responseContent的转储.认为它可能是gzip,因为响应标题说内容类型是gzip,我已经尝试了各种解压缩调用,但无济于事.到底发生了什么事?

Chr*_*son 8

内容使用gzip压缩.您需要在响应中使用getBody(),而不是getContent().