2015-09-30 2 views
3

Я использую Guzzle, чтобы сделать запрос aSync, который возвращает JSON. Вызов работает нормально, и ответ в порядке, однако:Как вернуть ответ Guzzle JSON

$client = new Client(); 
    $promise = $client->requestAsync($requestType ,$this->url.$resource, // endpoint 
     [ 
      'auth' => [ // credentials 
       $this->username, 
       $this->password 
      ], 
      'json' => $payload, // the package 
      'curl' => [ // some curl options 
       CURLOPT_HTTPAUTH => CURLAUTH_BASIC, 
       CURLOPT_RETURNTRANSFER => true, 
      ], 
      'headers' => [ // custom headers 
       'Accept' => 'application/json', 
       'Content-Type' => 'application/json' 
      ] 
     ] 
    ); 

    $response = $promise->wait(); 
    echo $response->getStatusCode().'<br /><br />'; 
    // Error handling 
    if($response->getStatusCode() != 200){ 
     // Error Handling 
    }else{ 
     echo $response->getBody(true); 
    } 

если эхо response-> getBody() Я вижу строку JSON, но если я назначу его в собственность, print_r, или вернуть его I get:

GuzzleHttp\Psr7\Stream Object ([stream:GuzzleHttp\Psr7\Stream:private] => Resource id #245 [size:GuzzleHttp\Psr7\Stream:private] => [seekable:GuzzleHttp\Psr7\Stream:private] => 1 [readable:GuzzleHttp\Psr7\Stream:private] => 1 [writable:GuzzleHttp\Psr7\Stream:private] => 1 [uri:GuzzleHttp\Psr7\Stream:private] => php://temp [customMetadata:GuzzleHttp\Psr7\Stream:private] => Array ()) 

Мне нужно использовать JSON для проверки моего ответа от службы. Как я могу это сделать? Я прошел через документы, но я, очевидно, что-то пропустил.

По существу вдоль линий назначая вывода getBody JSon сказать $ JSON:

if($json->first_field > 0) 

Любая помощь приветствуется. Привет

ответ

8

После еще нескольких исследований по SO я упал головой в этот пост

Guzzle 6: no more json() method for responses

По сути, выполнив следующие действия будет возвращать сырой выход.

return $response->getBody()->getContents(); 

Огромная головная боль ушла. Надеюсь, это поможет кому-то.

+0

Lol Я ищу это часами - я не могу понять, как, когда какая-то lib становится настолько популярной, как часть Laravel, они не начинают обновлять свои документы при выпуске новой версии. Thanks – martyyy

+0

@martyyy Guzzle НЕ является частью рамки Laravel. –

+0

ОК, это не так, как указано в их документации и учебниках – martyyy

Смежные вопросы