excel - 距离矩阵 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,但它不起作用。
解决方案
你会想看看实际的网页是如何工作的。
在 Chrome 中打开网页,然后在 DevTools (F12) 中查看请求流量,它将在网络选项卡上。
您必须在侧边栏中找到请求,通过 XHR 过滤会有所帮助。
当您找到请求本身时,它将向您展示它是如何编码的。拉丁语不太可能是传输编码参数,UTF-8 可能在通过输入的 JavaScript 规范化发送请求之前被过滤。但除非您检查 DevTools 中的 API,否则您将无法确定。
此外,如果您只是使用 QueryString(也就是 url 中的 API 参数的一部分)与 API 交互,则可能会发生 urlencode。在圣保罗,您可以使用本网站了解其工作原理。在发布/获取 API 之前,您可能需要使用 urlencode 函数“清理”您的输入。
推荐阅读
- c# - 如何使用 Fresh MVVM 在 Xamarin 表单中创建轮播页面?
- c# - 可以为策略内联而不是使用属性运行所有处理程序吗?
- javascript - 如何在将图像保存到服务器之前使用 event.target.files 填充 img src
- python - 调用模型摘要 keras 时面临的问题
- django-rest-framework - Python DRF,将序列化数据提取到变量
- awk - grep 命令或 awk 获取特定数据
- ios - 如何禁用第一节@iOS的表格视图滚动
- vitess - 将 dot net core 应用程序连接到 vitess 数据库
- kotlin - UnifiedNativeAdView 的 Admob 原生广告在 Kotlin 中不可点击
- c# - 无法加载文件或程序集'System.Threading.Tasks.Extensions,版本 = 4.2.0.0