2013-08-28 28 views
5

我從zf2 api調用中得到一個奇怪的編碼問題。我已經驗證了API內部工作,以及它應該返回響應來源於此的API程序,這需要一個圖像文件並裁剪它:使用curl從ZF2 api調用響應的奇怪編碼

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

它發出之前,導致的$ A轉儲出來是這樣的:

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

但我發現了後面的實際反應是這樣的:

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

這裏是我如何調用API,使用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(); 

看起來被編碼的部分是$ responseContent的轉儲。認爲它可能會被壓縮,因爲響應頭文件說內容類型是gzip,我已經試過了各種解壓縮的調用,但沒有用。這裏發生了什麼?

回答

8

內容使用gzip進行壓縮。您需要在響應中使用getBody(),而不是getContent()。