2017-01-20 9 views
1

guzzle을 사용하여 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() 

은 스트림 인터페이스를 반환합니다. 당신은 너무, 그 스트림의 콘텐츠를 원하는 :

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

당신이 문서에 따르면

검색하는 것입니다, 당신은 또한에 streaminterface 전송할 수 있습니다 문자열이지만 다양한 결과가 나타납니다. getContents()은 항상 필요한 작업을 수행하므로 해결 방법을 찾지 못합니다.

+0

이 완벽하게 작동해야합니다. json 객체를 문자열로 반환한다는 것을 귀찮게하는 유일한 것입니다. ' "{"returnCode ": 0,"success ": true}"'. 어떻게 든 변환 할 수 있습니까? – Scarwolf

+0

JSON을 문자열로 지정하려는 경우 이미 있습니다. 그 문자열을 php 객체로 만들고 싶다면'json_decode ($ response-> getBody() -> getContents())'를 사용하면된다. – Loek

+0

그래, 나는 후자를 의미했다. – Scarwolf