SpringBoot中使用RestTemplate访问Url操作并对返回对象进行操作(Json)
最近在实习工作实现一个小的需求需要用到RestTemplate工具类去在后端访问url地址合其他内容,因此记录和分享一下RestTemplate的使用过程和使用方法。
1.创建RestTemplate
RestTemplate restTemplate = new RestTemplate();
2.设置请求头HttpHeaders
要进行http访问请求头肯定是需要配置,如果不配置相应的请求头,可能会在访问过程中出现一些异常或者是返回结果异常。我这里只是写出了我用的请求头,其他需要的配置可以搜其他的请求头,配置规则即可。
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.parseMediaType("application/json;charset=UTF-8"));
headers.add("Accept", MediaType.APPLICATION_JSON.toString());
headers.add("Accept-Charset", "application/json;charset=utf-8");
3.POST请求操作
3.1postForObject方法
要进行POST请求,也需要配置一下参数进行传递,所以需要先创建参数Map进行POST方法的参数。
Map<String, Object> requestBody = new HashMap<>(8);
requestBody.put(para,value);
HttpEntity<Map<String, Object>> httpEntity = new HttpEntity<>(requestBody, headers);
JSONObjectresponseObj = restTemplate.(urlAddress,httpEntity,JSONObject.class);
//返回Json字符串方便后续的字段操作
//例如截取json中的data字段,例如这个字段中存储的是一个list,然后就可以对这个对象操作啦
List<T> resultList = (List<T>) responseObj.get("data");
3.2postForEntity方法
ResponseEntity<String> result = restTemplate.postForEntity(url, httpEntity, String.class);
System.out.println(JSONObject.toJSONString(result));
4.GET请求操作
4.1getForObject
要进行GET请求,这时候不需要配置参数Map,如果有参数需要拼接到Url地址后面
String url ="http://localhost:8080/test/usertest";
StringBuilder urlStringBuilder = new StringBuilder();
String param = "userName", value = "guoshuai";
urlStringBuilder.append(url + "?" + param + "=" + value);
responseObj = restTemplate.getForObject(urlStringBuilder.toString(),JSONObject.class);
4.2getForEntity请求带参数
String url = "http://localhost:8080/test/usertest?userId={userId}";
Map<String,Object> paramMap= new HashMap<>();
paramMap.put("userId","10010");
ResponseEntity<T> result = restTemplate.getForEntity(url,String.class,paramMap);