获取API请求的JSON响应

获取API请求的JSON响应

问题描述:

我试图获得API请求的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栏中尝试它时,它正在工作。我做错了吗? 请帮帮我。

+0

什么是'DD($地理编码)'的输出?它可能在浏览器中工作,但在字符串中填充了'$ API_KEY'? – 2015-01-15 17:18:53

+4

'var_dump($ json);'你会得到什么? – Steve 2015-01-15 17:19:04

+0

@DavidBarker:'string'http://api.ipinfodb.com/v3/ip-city/?key=shows-my-api-key-here&ip=70.27.250.191'(长度= 121)' – user1012181 2015-01-15 17:20:15

您需要申请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" 
} 

您尚未提供您希望收到回复的有效格式。根据IP Info DB's official documentation,API返回原始响应。为了获得JSON响应,请在您的API请求中包含参数format。所以,你的API URL现在变成:

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