【问题标题】:How to get response from Guzzle Http in PHP如何在 PHP 中从 Guzzle Http 获得响应
【发布时间】:2018-05-29 12:42:04
【问题描述】:

我正在 Laravel 5.5 中构建一个应用程序,我正在调用 api 请求以获取响应,我在我的控制器中关注:

$client = new GuzzleHttp\Client();
$response = $client->request('GET', 'http://www.conxn.co.in/CoxnsvcA.svc/Login');
dd($response);

我可以得到这样的东西:

但是在做$response->getBody(); 时,我很难得到回应。当我做dd($response->getBody() 我得到:

在邮递员中显示如下:

帮我解决这个问题。

谢谢。

【问题讨论】:

  • 你试过(string) $response->getBody()吗?该方法将返回一个流,这需要根据您要执行的操作进行特殊处理。也许您可以显示大部分代码?例如,当您调用$response->getBody() 时,您会得到什么而不是响应数据?
  • @dbrumann 它正在显示流集,但我找不到可以检索的响应。给我 2 分钟,我将用输出值更新问题。
  • 好像有错误。在邮递员结果中显示参数有错误。
  • @UlrichDohou 是的,正在发生一些更新,请立即查看。
  • 正如我所说,主体是一个流。当您执行(string) $response->getBody() 时,它将使其成为常规字符串。你也可以使用 Guzzle 的辅助方法 $data = $response->json(); 从已经解析的响应中获取数据,当你知道它是 json 时

标签: laravel laravel-5.5 guzzle


【解决方案1】:

这应该有效:

$client = new GuzzleHttp\Client();
$response = $client->request('GET','http://www.conxn.co.in/CoxnsvcA.svc/Login');

$response_body = json_decode($response->getBody());

【讨论】:

    【解决方案2】:

    这应该适合你。

    $client = new GuzzleHttp\Client();
    
    $response = $client->request("GET", "http://www.googleapi.com", ['headers' => ['Accept' => 'application/json']]); 
    
    $response_data = json_decode((string) $response->getBody(), true);
    
    return collect($response_data);
    

    【讨论】:

    • 以某种方式帮助json_decode((string) + true。好一个
    猜你喜欢
    • 1970-01-01
    • 2017-10-24
    • 1970-01-01
    • 2017-10-25
    • 2015-11-14
    • 1970-01-01
    • 2020-09-28
    • 2017-12-24
    • 1970-01-01
    相关资源
    最近更新 更多