php - 使用 PHP curl 从 Google 的地理编码 API 返回数据

这个问题与回答的另一个问题类似,但是在那种情况下的解决方案是使用国家代码,这对于这种特定用途是不可行的,因为地址是由用户通过输入字段提供的(因此可能无法提供国家/地区)。

这是我当前请求的内容

来自 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 方法没有按预期运行。有人处理过这个问题吗?

最佳答案

如果你说 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'];

https://stackoverflow.com/questions/45719648/

相关文章:

spring - @Document(collection = "Test") 在 MongoRep

c# - Signalr net client On 事件泛型类型参数

r - 无法删除文件 - 打开我的 Rstudio

python-3.x - Python 3 文件共享变量

vue.js - token 失效时自动注销用户

javascript - 如何将样式(css)和js添加到 Handlebars 文件?

outlook - 仅在 Web 上启用 Outlook Web 插件

hibernate - 如何将表名作为参数传递给 HQL 查询

selenium - 使用 SendKeys 向 IE 11 发送 '@' 特殊字符

c# - 更改 RedirectUri、Nginx 和 ASP.NEt Core