Объект класса GuzzleHttp\Psr7\Request не может быть преобразован в строку

У меня проблема с laravel 5.4, когда я пытаюсь использовать guzzleHttp. вот мой код.

use GuzzleHttp\Client;
$url = 'http://example.com';
$client = new Client();

$parameter = ['query' => ['name' => 'xxx', 'address' => 'yyy'], 'headers' => [ 'User-Agent' => 'xxxx', 'exceptions' => false, 'timeout' => 10 ]];
$res = $client->request('GET', $url, $parameter);

if ($res->getStatusCode() == 200)
{
 $json = (string)$res->getBody();
 return $json;
}

и у меня есть эта ошибка в журнале: Исключение ошибки: объект класса GuzzleHttp\Psr7\Request не может быть преобразован в строку

что не так с моим кодом? Пожалуйста, помогите мне. к вашему сведению, эта ошибка не всегда происходит. иногда он показывает эту ошибку, иногда успех.

благодарю вас


person php dev    schedule 07.06.2017    source источник
comment
попробуйте этот URL-адрес github.com/MatissJanis/oc-mail/commit/   -  person Ramzan Mahmood    schedule 07.06.2017
comment
Для меня проблема заключалась в том, что я ранее случайно сохранил для кэширования ответ (результат $client->request()) вместо использования ->getBody()->getContents(), и поэтому я продолжал путаться, когда видел эти ошибки, потому что думал, что они говорят о другом запросе Guzzle. , но я просто читал переменную из кеша, ожидая, что это будет строка, а на самом деле это был объект ответа.   -  person Ryan    schedule 09.03.2019


Ответы (2)


$json = $res->getBody()->getContents();

попробуй это

person Exprator    schedule 07.06.2017

Попробуй это.....

    try {
        $parameter = ['query' => ['name' => 'xxx', 'address' => 'yyy'], 'headers' => [ 'User-Agent' => 'xxxx', 'exceptions' => false, 'timeout' => 10 ]];
        $res = $client->request('GET', $url, $parameter);

        if ($res->getStatusCode() == 200)
          {
             return $res->getBody()->getContents();
          }
    }catch(Exception $e){
        echo 'Caught exception: ',  $e->getMessage();
    }
person Farhad Hossen    schedule 07.06.2017