2013-08-28 27 views
5

Ricevo uno strano problema di codifica da una chiamata zf2 api. Ho verificato l'API sta lavorando internamente, e la risposta si suppone rispedire proviene da questo nella routine api, che prende un file immagine e le colture è:Codifica bizzarra in risposta da chiamata ZF2 api utilizzando curl

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

Una discarica di $ risultato prima di essere inviato si affaccia in questo modo:

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

Ma la risposta effettiva sto ottenendo posteriore è simile a questo:

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

Ecco come sto chiamando l'API, utilizzando ricciolo:

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

La parte che sembra codificata è un dump di $ responseContent. Pensando che potrebbe essere gzip, perché l'intestazione della risposta dice che il tipo di contenuto è gzip, ho provato varie chiamate decompresse su di esso, senza alcun risultato. Che diamine sta succedendo qui?

risposta

8

Il contenuto è compresso con gzip. È necessario utilizzare getBody() e non getContent() sulla risposta.