这一问题与回答的另一个问题类似,但在这种情况下,解决办法是使用国家代码,这对这一特定用途是不可行的,因为地址是由用户通过输入字段提供的(因此可能不提供国家)。
以下是我当前请求的内容
请求来自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响应。
我也尝试过使用的$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方法的行为不像预期的那样。有没有人处理过这个问题?
发布于 2017-08-16 17:36:27
如果您说的是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'];发布于 2020-05-15 22:37:12
再试试
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSL_VERIFYHOST => falsehttps://stackoverflow.com/questions/45719648
复制相似问题