距离矩阵API中的UTF-8处理

问题描述 投票:0回答:1

我正在尝试编写与Google的Distance Matrix Api交互的VBA代码,并向我返回两点之间的距离。问题是,当我尝试使用拉丁字母(如ã)时,它返回无效目标错误:

    <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,但是没有用。

excel vba google-distancematrix-api
1个回答
0
投票

您将要看一下实际网页的工作方式。

在Chrome中打开网页,然后在DevTools(F12)中查看请求流量,它将位于网络标签上。

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

[当您找到请求本身时,它将向您显示请求的编码方式。 Latin不太可能是transfer-encoding参数,并且在通过输入的JavaScript规范发送请求之前,可能已过滤UTF-8。但是除非您在DevTools中检查API,否则您将无法确定。

[此外,如果您只是使用QueryString(即URL中API参数的一部分)与API进行交互,则可能正在发生urlencode。您可以使用this website查看圣保罗的运作方式。在发布/获取API之前,您可能需要使用urlencode函数“清理”输入。

© www.soinside.com 2019 - 2024. All rights reserved.