Метод запроса клиента Guzzle возвращает объект ответа вместо объекта запроса

Я новичок в Guzzle и пытался читать документацию, но до сих пор не могу найти на нее ответ.

Например, я получаю этот код из здесь

$request = $client->post('http://httpbin.org/post', array(), array(
    'custom_field' => 'my custom value',
    'file_field'   => '@/path/to/file.xml'
));

$response = $request->send();

Я пытался сделать то же самое, но когда выполняется $client->post(), он возвращает объект ответа вместо запроса. Что может быть не так?

Я использую версию 6.


person iwazovsky    schedule 08.10.2015    source источник
comment
Я ожидаю, что будет возвращен объект ответа .... это ответ на запрос, так что это не звучит неправильно .... почему вы так думаете?   -  person Mark Baker    schedule 08.10.2015
comment
Я предоставил код из документации, поэтому я просто не понимаю правильное поведение   -  person iwazovsky    schedule 08.10.2015
comment
Это правильное поведение... ваш $request->send() отправляет запрос на сервер http://httpbin.org/post и получает ответ от этого сервера... этот ответ от сервера является возвращаемым значением, которое затем присваивается $response   -  person Mark Baker    schedule 08.10.2015
comment
Да, в документации это правильно, но я получаю объект ответа на $client-›post   -  person iwazovsky    schedule 08.10.2015
comment
Также обратите внимание, что технически это не метод request, а метод send() объекта request.   -  person Mark Baker    schedule 08.10.2015
comment
Да!!! Вы должны вернуть объект ответа — Guzzle docsSending a request will return a Guzzle\Http\Message\Response object.   -  person Mark Baker    schedule 08.10.2015
comment
Успокойтесь, я понимаю, что должен получить obkext ответа, но, повторюсь, я не могу вызвать send(), потому что вместо запроса я получил объект ответа   -  person iwazovsky    schedule 08.10.2015
comment
Вы имеете в виду, что $request является объектом ответа? Метод post() выполняет send(), как и get() и т. д.   -  person Mark Baker    schedule 08.10.2015
comment
Собственно, это я и хотел сказать   -  person iwazovsky    schedule 08.10.2015


Ответы (1)


Согласно Guzzle Docs всем "магическим методам", get(), delete(), put(), post(), options(), patch() and head() вернет объект ответа.

Если вы проверите исходный код GuzzleHttp\Client, вы увидит, что магические методы на самом деле являются абстракциями Client::request(), обрабатываемыми Client::__call().

Независимо от типа запроса, вы всегда должны получить ответ.

person Shaun Bramley    schedule 08.10.2015
comment
Мне просто неудобно, что документы дают код, но он не работает именно так, как есть. - person iwazovsky; 08.10.2015