Этот вопрос аналогичен ответу на другой вопрос, однако решение в этом случае заключалось в использовании кода страны, который не подходит для этого конкретного использования, поскольку адрес предоставляется пользователем через поле ввода (поэтому страна не может предоставляться).
Вот содержание моего текущего запроса
Запрос поступил от AngularJS:
function getCoordinatesFromApi(address) {
addressApiResponse = $http({
url: 'php/coordinates.php',
method: 'get',
params: {
address: address
},
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
});
return addressApiResponse;
}
Запрос обрабатывается в PHP:
$api_maps = 'https://maps.googleapis.com/maps/';
$address = urencode($_GET['address']);
$api_key = 'API_key_here';
$url = $api_maps . 'api/geocode/json?address=' . $address . '&key=' . $api_key;
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$curl_response = curl_exec($curl);
curl_close($curl);
echo ($curl_response);
Когда это вызывается, я последовательно получаю верный ответ со статусом: 200, но данные — пустая строка.
Я проверил правильность сборки $ url в PHP и все в порядке, доступ к этому URL прямо в браузере отображает действительный ответ API с данными.
Я также пытался используя Angular $ http метод, который также возвращает действительный ответ от API:
function getCoordinatesFromApi(address) {
addressApiResponse = $http.get('https://maps.googleapis.com/maps/api/geocode/json?address=' + address + '&key=API_key_here');
return addressApiResponse;
}
По какой-то причине, это единственный метод curl, который не работает должным образом. Кто-нибудь имел дело с этой проблемой?
Если вы говорите, что echo ($ curl_response); ничего не возвращать, даже если статус 200, это потому что он закодирован в JSON!
Пожалуйста, попробуйте это:
$decodedresponse = json_decode($curl_response);
//send me what var_dump return so I can hellp you accessing the array!
echo var_dump($decodedresponse);//You would use as an array DEPENDING ON HOW THE ARRAY IS BUILD OF COURSE
echo $decodedresponse['response']['lat'];
echo $decodedresponse['response']['long'];
Других решений пока нет …