2017-01-20 5 views
1

Я обращаюсь к своему API с помощью жужжания.Laravel + GuzzleHTTP нет данных ответа?

$client = new Client(); 
     $response = $client->post('xxxxxx', 
      array(
       'headers' => array('Content-Type'=>'application/json'), 
       'json'=> array(
        "type" => 0, 
        [...] 
       ) 
      ) 
     ); 

     //$response = json_decode($response); 

     dd($response->getBody()); 

Это должен вывести меня что-то вроде этого:

{ 
    "returnCode": 0, 
    "success": true 
} 

, но вместо этого я получаю что-то другое.

Stream {#230 ▼ 
    -stream: stream resource @12 ▼ 
    wrapper_type: "PHP" 
    stream_type: "TEMP" 
    mode: "w+b" 
    unread_bytes: 0 
    seekable: true 
    uri: "php://temp" 
    options: [] 
    } 
    -size: null 
    -seekable: true 
    -readable: true 
    -writable: true 
    -uri: "php://temp" 
    -customMetadata: [] 
} 

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

ответ

2
getBody() 

возвращает streaminterface. Вы хотите, чтобы содержание этого потока, так:

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

является то, что вы ищете

Примечание

Согласно документации, вы можете также бросить streaminterface к строка, но у меня были разные результаты. getContents() всегда делает то, что ему нужно сделать, так что это мое решение.

+0

Это идеальный способ работы. Единственное, что беспокоит меня, что он возвращает мне объект json в виде строки. ' "{" Код возврата ": 0," успех ": истинный}"'. Могу ли я это сделать так или иначе? – Scarwolf

+0

Если вы хотите, чтобы ваш JSON был строкой, это уже есть. Если вы хотите сделать эту строку php-объектом, просто сделайте 'json_decode ($ response-> getBody() -> getContents())' – Loek

+0

Да, я имел в виду последнее, спасибо большое. – Scarwolf

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