本文共 2408 字,大约阅读时间需要 8 分钟。
在一个Controller中接收数据的方式可能会遇到一些问题,特别是在使用RestTemplate时。以下是解决问题的具体方法:
@PostMapping(value = "userinfo/save")public MapuserInfo(@RequestBody Map userInfo) { // 业务逻辑}
在RestTemplate中使用多种方式尝试后,发现直接使用RestTemplate.postForEntity方法无法成功接收数据。为了解决这个问题,可以按照以下步骤进行:
String url = "http://example.com/userinfo/save";HttpHeaders headers = new HttpHeaders();headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
HttpEntityrequest = new HttpEntity ( HttpUtil.parseURLPair(userInfo), headers);
ResponseEntity
public static String parseURLPair(Object o) throws Exception { Class c = o.getClass(); Field[] fields = c.getDeclaredFields(); Map map = new TreeMap (); for (Field field : fields) { field.setAccessible(true); String name = field.getName(); Object value = field.get(o); if (value != null) { map.put(name, value); } } Set > set = map.entrySet(); Iterator > it = set.iterator(); StringBuffer sb = new StringBuffer(); while (it.hasNext()) { Map.Entry e = it.next(); sb.append(e.getKey()).append("=").append(e.getValue()).append("&"); } return sb.deleteCharAt(sb.length() - 1).toString();} 在Controller中:
@PostMapping(value = "userinfo/save")public MapuserInfo(@RequestBody Map userInfo) { String url = "http://example.com/userinfo/save"; HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); HttpEntity request = new HttpEntity ( HttpUtil.parseURLPair(userInfo), headers ); ResponseEntity
通过以上方法,可以成功地在Controller中使用RestTemplate接收数据,并处理返回的结果。
转载地址:http://inyh.baihongyu.com/