Google地理编码API:未URL编码的日本地址自2024.10.12起请求超时
谷歌地理编码API未编码请求超时问题(2024.10.12起)
以下是未进行URL编码的Golang调用示例:
https://maps.googleapis.com/maps/api/geocode/json?address=大田区北千束3丁目&key=xxxx(please change to key)
该请求在2024年10月11日及之前均可正常返回结果,但从10月12日起,相同请求会在长时间等待后超时。
可能原因与解决方案
- 核心问题大概率是谷歌API对URL参数的编码校验规则收紧。之前可能兼容了未编码的多字节字符(比如日文汉字、全角数字),但10月12日之后的变更强制要求严格遵循URL编码规范。
- 未编码的多字节字符会导致服务器端请求解析异常,进而引发处理阻塞,最终触发超时。
- 直接解决方法:对
address参数进行URL编码。在Golang中可以使用标准库的url.QueryEscape()方法处理,示例代码如下:package main import ( "net/url" "fmt" ) func main() { targetAddress := "大田区北千束3丁目" encodedAddress := url.QueryEscape(targetAddress) apiRequestURL := fmt.Sprintf("https://maps.googleapis.com/maps/api/geocode/json?address=%s&key=your_actual_api_key", encodedAddress) // 后续使用apiRequestURL发起请求即可 fmt.Println(apiRequestURL) } - 编码后的URL会将所有非ASCII字符和特殊符号转换为URL合规格式(比如全角数字
3会被转义为%EF%BC%93),能彻底避免解析异常导致的超时。 - 额外排查方向:确认API密钥的权限是否有变更、谷歌地理编码服务是否存在区域性故障,但结合时间节点和请求格式问题,编码问题的优先级最高。
内容的提问来源于stack exchange,提问作者Neeraj Kumar
相关产品推荐
相关产品推荐

