在接短信平台的接口时,使用了RestTemplate的getForObject方法,自以为会自动拼接参数,所以只传了url和保存参数的map,但是多次提交失败,以为是中间转码出错
public <T> T getForObject(String url, Class<T> responseType, Map<String, ?> uriVariables) throws RestClientException {
return restTemplate.getForObject(url, responseType, uriVariables);
}
经过查看源码,发现最后并没有把参数拼接到url上,然后找了资料才发现了正确用法,尴尬~原来不是自动把map的key和value拼接到url上面,而是需要自己先指定好。即
http://localhost:8080/shortmessageservice.asmx/Send?sysName={sysName}&phoneNumbers={phoneNumbers}&content={content}&priority={priority}
要用占位符指定到参数对应的key,和自定义的map一样,使用getForObject方法即可成功把参数拼接上去。
//map的定义
Map<String,String> request = new HashMap<>();
request.put("sysName","username");
request.put("phoneNumbers","13800138000");
request.put("content","内容");
request.put("priority", "getforobject");

本文详细介绍了在使用Spring的RestTemplate类中getForObject方法时,如何正确地将参数map与URL进行拼接。作者最初误以为此方法会自动拼接参数,导致多次请求失败。通过查阅源码及资料,最终发现需在URL中预先设置占位符对应参数key,才能实现参数的正确拼接。

3050

被折叠的 条评论
为什么被折叠?



