7

I've got an issue for laravel 5.4 when I trying to using guzzleHttp. here is my code.

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;
}

and I've got this error on log: Error Exception: Object of class GuzzleHttp\Psr7\Request could not be converted to string

what is wrong with my code? please kindly help me. fyi, this error not always happen. sometimes it show this error, sometimes success.

thank you

PHP Java Eng
  • 81
  • 1
  • 1
  • 5
  • try this url https://github.com/MatissJanis/oc-mail/commit/e00eb1e4c50df501fd6929c6507f00aaac01b7c5 – Ramzan Mahmood Jun 07 '17 at 04:36
  • For me, the problem was that I'd previously accidentally saved to cache a "response" (result of `$client->request()`) instead of using `->getBody()->getContents()`, and so then I kept getting confused when I saw these errors because I thought they were talking about a different Guzzle request, but it was just that I was reading a variable from cache expecting it to be a string, and it was really a response object. – Ryan Mar 08 '19 at 22:57

3 Answers3

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

try this

Exprator
  • 26,992
  • 6
  • 47
  • 59
0

Try this.....

    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();
    }
Farhad Hossen
  • 263
  • 1
  • 6
0
$response = $client->post('http:yanjye.com3', ['phone' => '00','password' => '5555',]);
        if ($response->getStatusCode() == 200){
            $json = (string)$response->getBody();
            return $json;
            }
         var_dump( $response);
         die();


Hello, brother, I think this is the Good way to  which is Working On both  laravel 5.2[larave 5.2]



i have removed Httm 
[laraver 5.2][1]

and use this code :

  [1]: https://laravel.com/docs/7.x/http-client`