Google Maps PHP CURL问题“您的客户发出了格式错误或非法的请求。这就是我们所知道的。”

时间:2017-11-14 06:21:19

标签: php google-maps curl google-api

我有一个使用CURL和Google Maps API返回地址坐标的函数。

代码如下:

function get_coordinates($address_string) {

    $address = urlencode($address_string);
    $url = "https://maps.googleapis.com/maps/api/geocode/json?address=" . $address . "&key=" . $api_key;

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_PROXYPORT, 3128);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    $response = curl_exec($ch);
    curl_close($ch);
    $response_a = json_decode($response);
    $status = $response_a->status;

    return $response;

}

该代码适用于我和我使用它的99%的Web服务器 - 但对于大约1%的服务器,Google会返回错误消息:

Your client has issued a malformed or illegal request. That’s all we know.

我已检查过Google API密钥是否正确,启用了PHP CURL,PHP版本与正在处理的PHP版本相匹配。

任何人都可以想到可能导致Google返回此消息的任何其他内容吗?

3 个答案:

答案 0 :(得分:12)

由于您的$ address变量具有空格的地址,请使用str_replace并用+号替换空格。

它会起作用,我遇到同样的问题,并以这种方式修复。

答案 1 :(得分:0)

该错误是由空格引起的,因此请确保您的$ address_string没有空格。

答案 2 :(得分:0)

我尝试了rescue1155建议的解决方案,但没有奏效。

urlencode($address)

确实对我有用。