首页 > 解决方案 > 距离矩阵 API 中的 UTF-8 处理

问题描述

我正在尝试编写一个与谷歌的距离矩阵 Api 交互的 VBA 代码,并返回两点之间的距离。问题是,当我尝试使用拉丁字母(如 ã)时,它会返回 Invalid Destination 错误:

    <status>INVALID_REQUEST</status>
    <error_message>Invalid request. Invalid 'destinations' parameter.</error_message>
</DistanceMatrixResponse>

我正在使用的网址是这样的:

https://maps.googleapis.com/maps/api/distancematrix/xml?units=metric&origins=Fortaleza&destinations=São+Paulo&key=" & myAPIK

你们知道有什么办法可以解决这个问题吗?

但是当我使用 UTF-8 代码而不是单词本身时,它会返回我想要的距离:

https://maps.googleapis.com/maps/api/distancematrix/xml?units=metric&origins=Fortaleza&destinations=S%C3%A3o+Paulo&key=" & myAPIK

我也已经尝试将语言 (pt-BR) 放入 Url,但它不起作用。

标签: excelvbagoogle-distancematrix-api

解决方案


你会想看看实际的网页是如何工作的。

在 Chrome 中打开网页,然后在 DevTools (F12) 中查看请求流量,它将在网络选项卡上。

您必须在侧边栏中找到请求,通过 XHR 过滤会有所帮助。

当您找到请求本身时,它将向您展示它是如何编码的。拉丁语不太可能是传输编码参数,UTF-8 可能在通过输入的 JavaScript 规范化发送请求之前被过滤。但除非您检查 DevTools 中的 API,否则您将无法确定。

此外,如果您只是使用 QueryString(也就是 url 中的 API 参数的一部分)与 API 交互,则可能会发生 urlencode。在圣保罗,您可以使用本网站了解其工作原理。在发布/获取 API 之前,您可能需要使用 urlencode 函数“清理”您的输入。


推荐阅读