Php 学习如何使用Guzzle从API访问数据

Php 学习如何使用Guzzle从API访问数据,php,api,laravel,laravel-5.1,guzzle,Php,Api,Laravel,Laravel 5.1,Guzzle,我正在构建一个需要使用API的新应用程序,特别是一个使用OAuth的应用程序,但首先我尝试使用一个简单的API来了解如何在应用程序中使用API,因为我以前从未使用过API 我正在本地主机上运行一个全新的Laravel5.1项目,安装了Guzzle库 我相信我已经按照来自的指示设置好了,但是我无法理解我得到的反应 我尝试使用的API是,发出请求的格式是freegoip.net/{format}/{IP\u或{hostname} 我已经设置了一个页面,可以在其中键入IP地址并提交该地址,然后通过控制

我正在构建一个需要使用API的新应用程序,特别是一个使用OAuth的应用程序,但首先我尝试使用一个简单的API来了解如何在应用程序中使用API,因为我以前从未使用过API

我正在本地主机上运行一个全新的Laravel5.1项目,安装了
Guzzle

我相信我已经按照来自的指示设置好了,但是我无法理解我得到的反应

我尝试使用的API是,发出请求的格式是
freegoip.net/{format}/{IP\u或{hostname}

我已经设置了一个页面,可以在其中键入IP地址并提交该地址,然后通过控制器中的以下函数运行该地址:

public function retrieve(Request $request)
    {
        $url = "http://freegeoip.net/json/" . $request->ipaddress;
        $client = new Client();
        $response = $client->request('GET', $url);
        dd($response);
    }
我的路线和所有设置都正确,我在控制器顶部引用Guzzle:

use GuzzleHttp\Client;
但是我从
dd($response)得到的响应对我来说没有任何意义,也没有给我任何提示,告诉我如何从中获取任何信息

这就是
dd($response)
输出的内容

Response {#195 ▼
  -reasonPhrase: "OK"
  -statusCode: 200
  -headers: array:8 [▶]
  -headerLines: array:8 [▶]
  -protocol: "1.1"
  -stream: Stream {#186 ▶}
}
但是当我通过浏览器运行等效的URL时,我得到了

{"ip":"202.21.xxx.xxx","country_code":"NZ","country_name":"New Zealand","region_code":"WGN","region_name":"Wellington","city":"Wellington","zip_code":"6011","time_zone":"Pacific/Auckland","latitude":-41.283,"longitude":174.784,"metro_code":0}

有谁能帮我解决我做错了什么,或者指出一些关于如何开始在Laravel中使用API的好资源吗。关于如何构建Laravel API有很多内容,但关于如何从Laravel访问API的内容却不多。

经过大量的挖掘,我发现我只是缺少了
json\u decode()

当我以如下方式运行请求时,请求工作正常:

public function retrieve(Request $request)
    {
        $url = "http://freegeoip.net/json/" . $request->ipaddress;
        $client = new Client();
        $response = $client->request('GET', $url);
        dd(json_decode($response->getBody()));
    }
为将来遇到类似问题的其他人回答此问题:)