文件获取内容 google 地理编码不起作用

file get content google geocode not working

当我尝试执行下面的代码时,它不起作用。

        $json = file_get_contents('https://maps.google.com/maps/api/geocode/json?address=R%20GRANJAO,%2021&sensor=false&key=MYAPIHERE');
        var_dump($json);

上面的代码 return 我用“ZERO_RESULTS”。

但如果我手动访问 link,它 return 就是内容。

示例如下:

当然,我使用的是有效的 API,因为大多数地址都有效,但有一些地址无效,就像这个例子一样。

我也试过使用 urlencode(),但问题不在这里。

我看到有必要添加一个 header 设置 'accept-language'。

        $url = "https://maps.google.com/maps/api/geocode/json?address=".urlencode($address)."&sensor=false&key=$apiKey";
        $header = array('Accept-Language: pt-BR,pt;q=0.8,en-US;q=0.5,en;q=0.3');
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        $json = curl_exec($curl);
        $err = curl_error($curl);
        curl_close($curl);

        $response = json_decode($json, true);

这解决了问题!