2013-09-20 4 views
2

У меня есть маленький клиент PHP апи с помощью этого метода:жрать и Невозможно разобрать ответ в JSON

private function send($endpoint) 
{ 
    $headers = array(); 
    $body = $this->xmlSerialiser->convertToXML($this->getQueue()); 

    try { 
     $response = json_decode(
      $this->guzzleClient->post(
       $endpoint, 
       $headers, $body 
      ) 
      ->send() 
      ->json() 
     ); 

    } catch (\Guzzle\Http\Exception\BadResponseException $e) { 
     $response = array('Error' => $e->getMessage()); 
    } 

    return $response; 
} 

Я всегда получающего

Unable to parse response body into JSON: 4 (500 Internal Server Error) 

Я уже пытался знать пример сервера ответ и, кажется, хорошо:

echo (string) $this->guzzleClient->post(
       $endpoint, 
       $headers, $body 
      ) 
      ->send()->getBody(); 

и это результат:

<Messages xmlns="http://www.example.com/xxx/3.0"> 

<GetAccountResponse RequestType="GetAccount"> 

    <AccountId>xxxx-xxx-xxx-xxxx-xxxx</AccountId> 

    <Token>xxxxxxxxxxxxxx/t3VkEJXC7f6b6G4yPJSZ5QfT2hdSQXUmi0e8cndSYLK4N7mswRHifzwGHLUJYHM17iGL8s=</Token> 

</GetAccountResponse> 

ответ

1

Я ответил сам

документация жрать говорит: метод JSON -> Разбираем тело ответа JSON и возвращает массив

поэтому в моем случае мне нужно переключить JSon mehod на xml (cos ответ - xml).

Наконец это результат:

private function send($endpoint) 
{ 
    $headers = array(); 
    $body = $this->xmlSerialiser->convertToXML($this->getQueue()); 

    try { 
     $response = (array)(
      $this->guzzleClient->post(
       $endpoint, 
       $headers, $body 
      ) 
      ->send() 
      ->xml() 
     ); 
    } catch (\Guzzle\Http\Exception\BadResponseException $e) { 
     $response = array('Error' => $e->getMessage()); 
    } 

    return $response; 
} 
+1

вы можете использовать $ response-> getBody() -> getContents() – DNS

1

Используйте следующий код.

$response->getBody()->getContents() 
Смежные вопросы