【发布时间】:2017-08-16 17:25:10
【问题描述】:
这个问题与另一个回答的问题相似,但是在这种情况下,解决方案是使用国家代码,这对于这种特定用途是不可行的,因为地址是由用户通过输入字段提供的(因此可能不提供国家/地区)。
这是我当前请求的内容
来自 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 的有效响应,但数据是空字符串。
我已经检查了在 PHP 中构建的 $url 的有效性,没问题,直接在浏览器中访问该 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 方法的行为不符合预期。有人处理过这个问题吗?
【问题讨论】:
标签: php angularjs curl google-geocoding-api