我正在使用AsyncRestTemplate从Springboot 1.5.2服务对Google Maps进行API调用。不幸的是,我的一些搜索字符串包含井号/主题标签符号,并且在我的搜索参数中没有正确编码。我正在使用交换方法。#
地址示例如下:05406, VT, BURLINGTON, 309 College St #10
@Service
public class ExampleAsyncRestTemplate {
private AsyncRestTemplate asyncRestTemplate;
@Autowired
public ExampleAsyncRestTemplate() {
this.asyncRestTemplate = new AsyncRestTemplate();
}
public ListenableFuture<ResponseEntity<T>> getGeoCodedAddress() {
String googleUrl = "https://maps.googleapis.com/maps/api/geocode/json?address=05406, VT, BURLINGTON, 309 College St #10&key=some_key";
Map<String, String> uriVariables = new HashMap<>();
uriVariables.put("address", "05406, VT, BURLINGTON, 309 College St #10");
uriVariables.put("key", "some_key");
return asyncRestTemplate.exchange(googleUrl, HttpMethod.GET, new HttpEntity<>(), GoogleResponse.class, uriVariables);
}
}
生成的 URL 编码为:
https://maps.googleapis.com/maps/api/geocode/json?address=05406,%20VT,%20BURLINGTON,%20309%20College%20St%20#10&key=some_key
请注意,当它应按照文档进行编码时,它仍在地址参数中。#%23
深入调试器,似乎()后面的字符串被当作URL的片段。因此,为什么永远不会被编码。#10&key=some_key#
是否有人能够使用 AsyncRestTemplate 在您的查询参数中提交符号?#
我唯一能想到的是 替换为 ,这实际上有效,但感觉很笨拙/不理想。#number
感谢您的帮助。
杨魅力
相关分类