一、问题描述
在一个Controller中是以一个对象来接收数据的:
@PostMapping(value = "userinfo/save")
public Map<String, Object> userInfo(UserInfo userInfo)
二、解决方法
在RestTemplate中使用多种方式,貌似都不行,按照以下方式实验,成功运行:
String url = "xxxx/xxxx/xxxxx/userinfo/save";
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
HttpEntity<String> request = new HttpEntity<String>(HttpUtil.parseURLPair(tbToken), headers);
ResponseEntity<Map> responseEntity = restTemplate.postForEntity(url, request, Map.class);
public static String parseURLPair(Object o) throws Exception{
Class<? extends Object> c = o.getClass();
Field[] fields = c.getDeclaredFields();
Map<String, Object> map = new TreeMap<String, Object>();
for (Field field : fields) {
field.setAccessible(true);
String name = field.getName();
Object value = field.get(o);
if(value != null)
map.put(name, value);
}
Set<Map.Entry<String, Object>> set = map.entrySet();
Iterator<Map.Entry<String, Object>> it = set.iterator();
StringBuffer sb = new StringBuffer();
while (it.hasNext()) {
Map.Entry<String, Object> e = it.next();
sb.append(e.getKey()).append("=").append(e.getValue()).append("&");
}
return sb.deleteCharAt(sb.length()-1).toString();
}