Java Springboot使用RestTemplate发送http请求
1. GET请求
public static void doGet(){
RestTemplate restTemplate = new RestTemplate();
//方式一,无参数
String result1 = restTemplate.getForEntity("http://localhost:8080/hello", String.class).getBody();
//方式二,1个参数
String result2 = restTemplate.getForEntity("http://localhost:8080/hello1?name={1}", String.class, "姓名").getBody();
//方式三,多个参数
Map<String, String> params = new HashMap<>();
params.put("name", "姓名");
params.put("id", "001");
String result3 = restTemplate.getForEntity("http://localhost:8080/hello1?name={name}&id={id}", String.class, params).getBody();
}
2. POST请求
(1).postForObject直接返回响应体,我们请求时通过泛型约束响应体的类型,但是这个方法无法得到状态头信息。
// restTemplate.postForObject(url,json,String.class)
// postForObject()==postForEntity().getBody()
{“code”:0,“success”:true,“message”:“success”,“data”:“success”}返回结果
(2).postForEntity方法将返回ResponseEntity对象,这个方法的返回值不仅包含状态头信息还包含响应体,例如你想知道自己的请求是返回500还是200,那么请使用postForEntity!且ResponseEntity实现了HttpEntity接口,它提供getBody返回(1)的结果。
// restTemplate.postForEntity(url,json,String.class).toString() 返回结果
<200,{“code”:0,“success”:true,“message”:“success”,“data”:“success”},{Content-Type=[application/json;charset=UTF-8], Transfer-Encoding=[chunked], Date=[Wed, 10 Jul 2019 05:30:11 GMT]}>
2.1 提交json字符串,JSONObject、Map、实体对象提交方式结果一样
public static void dopost(){
RestTemplate restTemplate = new RestTemplate();
JSONObject json = new JSONObject();
json.put("status",0);
json.put("cid","13546121");
json.put("data","[\"中国银行\",\"农业银行\"]");
String result1 = restTemplate.postForObject("http://localhost:8080/hello", json, String.class);
RequestDemo demo = new RequestDemo();
demo.setCid("4564132");
demo.setStatus(0);
demo.setData("[\"中国银行\",\"农业银行\"]");
String result2 = restTemplate.postForObject("http://localhost:8080/hello", demo, String.class);
Map<String, String> map = new HashMap<>();
map .put("status",0);
map .put("cid","13546121");
map .put("data","[\"中国银行\",\"农业银行\"]");
String result3 = restTemplate.postForObject("http://localhost:8080/hello", map , String.class);
}
2.2 若要提交对象,则必须使用MultiValueMap类型
public static void dopost(){
RestTemplate restTemplate = new RestTemplate();
MultiValueMap<String, Object> param = new LinkedMultiValueMap<>();
param .add("status",0);
param .add("cid","13546121");
param .add("data","[\"中国银行\",\"农业银行\"]");
restTemplate.postForEntity("http://localhost:8080/requestByJson", param, String.class).getBody();
}
上一篇: RestTemplate发送HTTP、HTTPS请求
下一篇: MFC中DLL的创建