5

I'm getting a weird encoding issue from a zf2 api call. I've verified the api is working internally, and the response it's supposed to send back comes from this in the api routine, which takes an image file and crops it:

$result = new ViewModel(array('output'=>$output, 'response'=>json_encode($response)));

A dump of $result before it's sent out looks like this:

[output] => json
[response] =>{"data":"http:\/\/dev.xxxxx.com\/tools\/files\/temporary_files\/f16da1965e4d0c487ae7692f4b51558b917c238e.1","status":"OK"}

But the actual response I'm getting back is like this:

^_<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>^@^@^@

Here's how I'm calling the api, using curl:

    $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();

The part that looks encoded is a dump of $responseContent. Thinking it might be gzipped, because the response header says the content-type is gzip, I've tried various unzipping call on it, to no avail. What the heck is going on here?

4

1 回答 1

8

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

于 2014-01-01T13:14:58.823 回答