RestTemplate
POST请求入参是JSON,发送方
public JWHandleResponse jWPersonPosition(PersonPositionRequest personPositionRequest) throws Exception { logger.info("请求的数据是===" + personPositionRequest); HttpHeaders headers = new HttpHeaders(); //发送JSON headers.setContentType(MediaType.APPLICATION_JSON); //接收XML headers.add("Accept", MediaType.APPLICATION_XML_VALUE); headers.add("Accept-Charset", "utf-8"); //对象转换JSON String body = JSON.toJSONString(personPositionRequest); HttpEntity<String> request = new HttpEntity<>(body, headers); String rpcResultStr = restTemplate.postForObject("http://localhost:3082/business/jw/personPosition2", request, String.class); return null; }
POST请求入参是XML,发送方
public JWHandleResponse jWPersonPosition(PersonPositionRequest personPositionRequest) throws Exception { logger.info("请求的数据是===" + personPositionRequest); HttpHeaders headers = new HttpHeaders(); // 发送 XML headers.setContentType(MediaType.APPLICATION_XML); // 接收XML headers.add("Accept", MediaType.APPLICATION_XML_VALUE); headers.add("Accept-Charset", "utf-8"); // 对象转换XML XmlMapper xmlMapper = new XmlMapper(); String body = xmlMapper.writeValueAsString(personPositionRequest); HttpEntity<String> request = new HttpEntity<>(body, headers); String rpcResultStr = restTemplate.postForObject("http://localhost:3082/business/jw/personPosition2", request, String.class); return null; }
POST请求接收方,可用实体接收JSON或者XML完全取决于发送方的setContentType,返回值格式则完全取决于发送方的Accept
// 人员定位接口 出 @PostMapping(value = "/personPosition2") public JWHandleResponse jWPersonPosition2(@RequestBody PersonPositionRequest personPositionRequest) { JWHandleResponse jWHandleResponse = new JWHandleResponse(); jWHandleResponse.setMsg("成功"); jWHandleResponse.setData(null); jWHandleResponse.setStatus("1"); return jWHandleResponse; }
------------------------------------------------------------------------------------------------------------------------
POST请求发送方使用表单提交一个对象
public String a() { HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); headers.add("Accept", MediaType.APPLICATION_JSON_VALUE); headers.add("Accept-Charset", "utf-8"); MultiValueMap<String, Object> map = new LinkedMultiValueMap<>(); map.add("a", "aaa"); map.add("b", "bbb"); HttpEntity<MultiValueMap<String, Object>> formEntity = new HttpEntity<>(map, headers); String postForObject = restTemplate.postForObject("http://localhost:3088/simulator/aa", formEntity, String.class); return postForObject; }
POST请求接收方用对象接收表单提交
@PostMapping(value = "aa") public String aa(Bean1 bean1) { return "ok"; }
------------------------------------------------------------------------------------------------------------------------
GET请求发送多个参数
public String b() { String forObject = restTemplate.getForObject("http://localhost:3088/simulator/bbb?name=zhangsan&age=12", String.class); return forObject; }
GET请求用多个参数接收
@GetMapping(value = "bb") public String bb(String name, String age) { return "ok"; }
GET请求用对象接收
@GetMapping(value = "bbb") public String bb(Bean2 bean2) { return "ok"; }
------------------------------------------------------------------------------------------------------------------------
getForObject()不能设置请求头,也就意味这无法规定返回值的参数类型是JSON还是XML我这里打印的结果是XML,但我们可以在参数中规定返回值的类型。
@GetMapping(value = "c") public String c() { String forObject = restTemplate.getForObject("http://localhost:3088/simulator/cc?name=zhangsan&age=12", String.class); //<Bean2><name>zhangsan</name><age>12</age></Bean2> System.out.println(forObject); Bean2 forObject2 = restTemplate.getForObject("http://localhost:3088/simulator/cc?name=zhangsan&age=12", Bean2.class); //Bean2 [name=zhangsan, age=12] System.out.println(forObject2); return forObject; } @GetMapping(value = "cc") public Bean2 cc(Bean2 bean2) { return bean2; }
------------------------------------------------------------------------------------------------------------------------
ForEntity获取全部的响应内容,ForObject只能获取响应体,获取不到响应头
@GetMapping(value = "d") public String d() { HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); headers.add("Accept", MediaType.APPLICATION_XML_VALUE); headers.add("Accept-Charset", "utf-8"); MultiValueMap<String, Object> map = new LinkedMultiValueMap<>(); map.add("name", "aaa"); map.add("age", "bbb"); HttpEntity<MultiValueMap<String, Object>> formEntity = new HttpEntity<>(map, headers); ResponseEntity<String> postForEntity = restTemplate.postForEntity("http://localhost:3088/simulator/dd", formEntity, String.class); String body = postForEntity.getBody(); //<Bean2><name>aaa</name><age>bbb</age></Bean2> System.out.println(body); int statusCodeValue = postForEntity.getStatusCodeValue(); //200 System.out.println(statusCodeValue); HttpHeaders headers2 = postForEntity.getHeaders(); MediaType contentType = headers2.getContentType(); //application/xml;charset=UTF-8 System.out.println(contentType); return ""; } @PostMapping(value = "dd") public Bean2 dd(Bean2 bean2) { return bean2; }