0

url https://maps.googleapis.com/maps/api/geocode/json?address=75019&sensor=false&components=postal_code:75019|country:US 的结果与 url https://maps.googleapis.com/结果不同地图/api/geocode/json?address=75019&sensor=false&components%3Dpostal_code:75019|country:US

两个 url 之间的唯一区别是“components”后面的“=”字符是在第二个 url 中编码的 url。结果是第二个网址:我得到了 2 个结果,一个是巴黎的,一个是德克萨斯的,这是不可取的。我只想要国家=美国的结果。我们在生产中使用第二个 url,但希望我们从第一个 url 获得结果。

问题是即使过滤器清楚地提到国家为美国,为什么我会从法国获得地址?

任何解决方案或见解?诊断是否正确?

4

1 回答 1

0

没有在第二个 URL 中将国家/地区指定为美国:

第二个 url 给谷歌一个名为“components%3Dpostal_code:75019|country:US”的参数,没有内容,而第一个给谷歌一个名为“components”的参数,内容为“postal_code:75019|country:US” - = 符号作为参数名称和值之间的分隔符很重要。如果您对其进行 url 编码,则不再考虑用于此目的。

因此,如果等号表示参数名称与其值之间的分隔,则不应对等号进行 URL 编码……这意味着您必须更改生产代码以生成第一个 URL。第二个只是不代表你想要表达的东西。

由于您不使用任何其他 url 编码字符(至少不在上面显示的链接中),因此在将请求发送到 google 之前,它也可以在某处进行单独的 Url 解码步骤(如果您绝对无法更改生产代码)。

于 2013-08-08T07:43:43.693 回答