我正在构建一个需要使用API的新应用程序,特别是一个使用OAuth的应用程序,但首先我尝试使用一个简单的API来解决如何使用在应用程序中使用一个,因为我之前从未使用过API。
我在安装了Guzzle
库的本地主机上运行了一个新的Laravel 5.1项目。
按照Guzzle documentation的说明,我相信我已将此设置正确,但我无法对我得到的回复做出反应。
我尝试使用的API为http://freegeoip.net/,请求的格式为freegeoip.net/{format}/{IP_or_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 ▶}
}
但是当我通过浏览器运行等效的网址时,我得到了
{"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访问它们的方法很多。
答案 0 :(得分:2)
经过大量的挖掘后,我发现我只是遗漏了json_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()));
}
为将来遇到此类问题的其他人解答此问题:)。