打开流失败:HTTP请求失败!HTTP/1.0 400坏请求

5

这是我用来获取地点经纬度的代码:

function coords($address){
    echo $url="http://maps.googleapis.com/maps/api/geocode/json?address=".$address;
    $json = file_get_contents(urlencode($url));
    $data = json_decode($json, TRUE);

    print_r($data['results'][0]['geometry']['location']['lat']);
    print_r($data['results'][0]['geometry']['location']['lng']);
}

然而,它总是返回此警告:

无法打开流:HTTP请求失败! HTTP / 1.0 400 Bad Request

如果我在简单的过程中使用上述代码,则正常工作,但在函数中不起作用。

注意:我尝试了curl_init()...方法,结果相同?


你应该在file_get_contents中使用urlencode而不是urldecode - Kamran
1
您正在使用错误的“变量”来处理“$url”,请检查您的“变量”名称“$add”和“$address”。 - ajaykumartak
1个回答

19

不要对整个URL进行编码,只需对地址部分进行编码。以下代码将正常工作

$add='jamshoro phase 2';
$url="http://maps.googleapis.com/maps/api/geocode/json?address=".urlencode($add);
$json = file_get_contents($url);
$data = json_decode($json, TRUE);
print_r($data['results'][0]['geometry']['location']['lat']);
print_r($data['results'][0]['geometry']['location']['lng']);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接