网址https://maps.googleapis.com/maps/api/geocode/json?address=75019&sensor=false&components=postal_code:75019|country:US的结果与网址https://maps.googleapis.com/maps/api/geocode/json?address=75019&sensor=false&components%3Dpostal_code:75019|country:US
的结果不同两个网址之间的唯一区别是“组件”之后的“=”字符在第二个网址中进行了网址编码。结果是第二个网址:我得到2个结果,一个用于巴黎&德克萨斯州的一个,这是不可取的。我希望结果仅适用于country = US。我们正在使用生产中的第二个网址,但希望从第一个网址获得结果。
问题是即使过滤器明确提到该国是美国,我为什么要从法国获得地址?
任何解决方案或见解?诊断是否正确?
答案 0 :(得分:0)
您不在第二个网址中将国家/地区指定为美国:
第二个网址为Google提供了一个名为“components%3Dpostal_code:75019 | country:US”的参数,没有任何内容,而第一个网址为google提供了一个名为“components”的参数,内容为“postal_code:75019 | country:US “ - =符号作为参数名称和值之间的分隔符很重要。如果你对其进行网址编码,则不再考虑此目的。
因此,如果它应表示参数名称与其值之间的分隔,则不应对等号进行URL编码...这意味着您必须更改生产代码以生成第一个URL。第二个不代表你想要表达的内容。
由于您不使用任何其他网址编码的字符(至少不在上面显示的链接中),因此在向Google发送请求之前,它可能还可以在某处执行单独的Url解码步骤(如果您绝对可以不要改变生产代码。