获取API请求的JSON响应

时间:2015-01-15 17:17:13

标签: php json

我试图获取API请求的json响应。

$GEOCODE = "http://api.ipinfodb.com/v3/ip-city/?key=$API_KEY&ip=70.27.250.191";

$json = file_get_contents($GEOCODE);
$data = json_decode($json);
dd($data);

返回输出:null。 但是当我在addrress栏中直接尝试它时,它正在工作。我做错了吗? 请帮我。

2 个答案:

答案 0 :(得分:1)

您需要申请json:

$GEOCODE = "http://api.ipinfodb.com/v3/ip-city/?key=$API_KEY&ip=70.27.250.191&format=json"; //<--THIS

$json = file_get_contents($GEOCODE);
$data = json_decode($json);
dd($data);

//output:

object(stdClass)#7 (11) {
  ["statusCode"]=>
  string(2) "OK"
  ["statusMessage"]=>
  string(0) ""
  ["ipAddress"]=>
  string(13) "70.27.250.191"
  ["countryCode"]=>
  string(2) "CA"
  ["countryName"]=>
  string(6) "Canada"
  ["regionName"]=>
  string(6) "Quebec"
  ["cityName"]=>
  string(8) "Montreal"
  ["zipCode"]=>
  string(7) "H1A 0A1"
  ["latitude"]=>
  string(7) "45.5088"
  ["longitude"]=>
  string(8) "-73.5878"
  ["timeZone"]=>
  string(6) "-05:00"
}

答案 1 :(得分:0)

您尚未提供要接收回复的有效格式。根据IP Info DB's official documentation,API会返回原始回复。要获取JSON响应,请在API请求中包含参数format。因此,您的API网址现在变为:

$GEOCODE = "http://api.ipinfodb.com/v3/ip-city/?key=$API_KEY&format=json&ip=70.27.250.191";