2015-01-15 2 views
0

Я пытаюсь получить ответ json для запроса API.Получите ответ JSON для запроса API

$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

Что такое выход 'дд ($ Геокодировать)'? Он может работать в браузере, но есть ли '$ API_KEY', заполняемый в строке? –

+4

'var_dump ($ json);' что вы получаете? – Steve

+0

@DavidBarker: 'string 'http://api.ipinfodb.com/v3/ip-city/?key=shows-my-api-key-here&ip=70.27.250.191' (length = 121)' – user1012181

ответ

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, включите параметр format в ваш запрос API. Так что ваш API URL теперь становится:

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