RestTemplate常用于请求第三方接口
一般有get,post,exchange等多种方式
在请求时,可以自己设置请求头等
RestTemplate的使用参考:RestTemplate | 使用详解_ (重点参考)
RestTemplate的请求参数传递问题 RestTemplate发送Get请求通过body传参问题
RestTemplate中postForEntity其中参数为数组或者List_
restTemplate模拟浏览器登录携带cookie请求接口_
注意:
get方式是将请求参数设置到url上的
post方式是将参数设置到body里面
post设置请求体的访问方式一般使用:
设置请求体的访问方式一般使用map: MultiValueMapparams = new LinkedMultiValueMap<>(); // 除了map以外,也可以使用string,根据请求头类型来确认 示例封装的方法: public String doPostForBody(String url, MultiValueMap body) { HttpHeaders headers = new HttpHeaders(); // 设置请求类型,根据需要设置 headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); // 设置请求头的方式,根据需要设置 List cookies = new ArrayList<>(); cookies.add(expendParam.getCookiesStr()); headers.put(HttpHeaders.COOKIE, cookies); // 设置请求boby HttpEntity > entity = new HttpEntity<>(body, headers); ResponseEntity resp = null; try { resp = restTemplate.postForEntity(url, entity, String.class); } catch (RestClientException e) { logger.error("请求失败:{}", url); logger.error("请求失败:", e); } return resp.getBody(); } // 使用完成后一般将string转换为json数据 JSONObject jsonObject = JSON.parseObject(doPostForBody(url,body)); // 注意,存在多个值时,即为数组,获取数组循环转换, JSONArray jsonArray = jsonObject.getJSONArray("rows");
如果要将返回的数据设置成自己的实现类,因为json数据是key-value形式,即map形式,一般使用Json格式化工具类转换 ,直接将返回的string使用工具类转换
@Data
public class Pojo01 {
private String field1;
private String field2;
private String field3;
private String field4;
private String field5;
}
public class Test01 {
public static void main(String[] args) {
Map hashMap = new HashMap<>();
hashMap.put("field1", "value1");
hashMap.put("field2", "value2");
hashMap.put("field3", "value3");
hashMap.put("field4", "value4");
hashMap.put("field5", "value5");
//将HashMap转为JSON,在转为Pojo01对象:
String toJSON = JSONObject.toJSONString(hashMap);
Pojo01 pojo01 = JSONObject.toJavaObject(JSON.parseObject(toJSON), Pojo01.class);
System.out.println(" pojo01 = " + pojo01.toString());
}
}



