2013-08-28 21 views
5

Otrzymuję dziwny problem kodowania od wywołania ZF2 api. I zostały zweryfikowane API pracuje wewnętrznie, a odpowiedź to ma odesłać pochodzi od tego w procedurze API, który bierze plik obrazu i upraw go:Dziwaczne kodowanie w odpowiedzi od wywołania ZF2 api za pomocą curl

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

zrzut $ spowodować zanim zostanie wysłany na zewnątrz wygląda następująco:

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

Ale rzeczywista odpowiedź dostaję z powrotem jest tak:

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

Oto jak dzwonię api, używając zwijania:

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

Część, która wygląda na zakodowaną, jest zrzutem wartości $ responseContent. Myśląc, że to gzipped, ponieważ nagłówek odpowiedzi mówi, że typem treści jest gzip, próbowałem różnych rozpakować wywołanie, bezskutecznie. Co tu się dzieje?

Odpowiedz

8

Treść jest skompresowana za pomocą programu gzip. Musisz użyć getBody(), a nie getContent() na odpowiedzi.