RestTemplate提交对象请求

一、问题描述

在一个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();
}

猜你喜欢

转载自blog.csdn.net/u011781521/article/details/81064822