2015-01-15 168 views
0

我試圖獲得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

回答

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" 
} 
0

您尚未提供您希望收到回覆的有效格式。根據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";