2017-01-07 6 views
1

Вот содержание response.txt:Как издеваться над ответом из файла, используя Guzzle 6?

HTTP/1.1 200 OK 
Server: nginx 
Date: Fri, 15 Feb 2016 18:25:28 GMT 
Content-Type: application/json;charset=utf-8 

{ 
    "field1": "a", 
    "field2": "b", 
} 

Я пробовал:

$stream = Psr7\stream_for(file_get_contents('response.txt')); 
$response = new Response(200, ['Content-Type' => 'application/json'], $stream); 
dd($response->getBody()); 

Какой выход:

object(GuzzleHttp\Psr7\Stream)#3 (7) { 
    ["stream":"GuzzleHttp\Psr7\Stream":private]=> 
    resource(26) of type (stream) 
    ["size":"GuzzleHttp\Psr7\Stream":private]=> 
    NULL 
    ["seekable":"GuzzleHttp\Psr7\Stream":private]=> 
    bool(true) 
    ["readable":"GuzzleHttp\Psr7\Stream":private]=> 
    bool(true) 
    ["writable":"GuzzleHttp\Psr7\Stream":private]=> 
    bool(true) 
    ["uri":"GuzzleHttp\Psr7\Stream":private]=> 
    string(10) "php://temp" 
    ["customMetadata":"GuzzleHttp\Psr7\Stream":private]=> 
    array(0) { 
    } 
} 

Так что я не могу получить содержимое JSON в response.txt, как это сделать что? То, что я хочу получить, это что-то вроде:

array('field1'=>'a','field2'=>'b'); 

ответ

1

Третий параметр конструктора класса Response должен быть строкой тела. См. Документацию для класса Guzzle Response: http://docs.guzzlephp.org/en/latest/psr7.html#guzzle-and-psr-7.

Следующий код должен работать:

$stream = file_get_contents('response.txt'); 
$response = new Response(200, ['Content-Type' => 'application/json'], $stream); 
dd($response->getBody()); 
+0

На самом деле я использовал '$ response-> getBody() -> getContent()', чтобы решить мою проблему – Phoenix

+0

getContents только возвращает остаток на поток. Если вы хотите безопасно получить все тело, вы должны передать его в строку. –

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