Laravel: Клиент GuzzleHttp

Я использую "guzzlehttp/guzzle": "~6.0" и пытаюсь подключить пользователей github, используя приведенный ниже код.

$client = new \GuzzleHttp\Client();

$request = $client->createRequest('GET', 'https://api.github.com/users');
$query = $request->getQuery();
$query->set('since',135);
$response = $request->send();
$oResponse = json_decode($response->getBody(true));

Но я получаю сообщение об ошибке Argument 3 passed to GuzzleHttp\Client::request() must be of the type array, string given Но этот метод работает на "guzzle/guzzle": "^3.9", Я не знаю, где я что-то упускаю.


person Faisal Ahsan    schedule 08.03.2016    source источник


Ответы (1)


"guzzlehttp/guzzle": "~6.0" даст вам Guzzle v6.1.1. Методы и сигнатуры методов различаются в версиях 3.9 и 6.1. Настолько, что Client::createRequest() не существует в версии 6.1, и фактически перехватывается Client::__call(), а затем передается в Client::request(), где вы получаете свою ошибку, потому что предоставленные аргументы не соответствуют подписи для Client::request().

Дополнительную информацию о Guzzle 6 можно получить в документах Guzzle.

Вы также обнаружите, что ваш $request->send() выдает ошибку. Guzzle 6 принял Psr7 близко к сердцу, и поэтому объекты Request / Response реализуют спецификацию Psr7.

person Shaun Bramley    schedule 08.03.2016
comment
Это очень хорошая техническая информация, которая объясняет, почему возникают ошибки, но не дает понимания быстрого решения проблемы. Можете ли вы расширить этот ответ? - person dctucker; 05.04.2016
comment
Несоответствие версий. Разработка для одного API, в то время как другой — это то, что на самом деле находится в системе. - person Shaun Bramley; 09.04.2016