「SpringBoot」 Java中如何封装Http请求( 二 )

Spring RestTemplate 封装HTTPspring自带的一种封装模式,方便简洁,推荐使用
public static String httpGet(String url){RestTemplate restTemplate=new RestTemplate();String result=restTemplate.exchange(url, HttpMethod.GET,null,String.class).getBody();return result;}public static String httpPost(String url,String name){RestTemplate restTemplate=new RestTemplate();return restTemplate.postForEntity(url,name,String.class).getBody();}HTTPS请求的封装https请求只是在http请求的基础上面添加了SSL验证,通过下面的SLLClient 封装即可,调用的时候:

httpClient = SSLClient.createSSLClientDefault();
public class SSLClient {public static CloseableHttpClient createSSLClientDefault(){try {SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() {//信任所有public boolean isTrusted(X509Certificate[] chain, String authType) throws CertificateException {return true;}}).build();SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext);return HttpClients.custom().setSSLSocketFactory(sslsf).build();} catch (KeyManagementException e) {e.printStackTrace();} catch (NoSuchAlgorithmException e) {e.printStackTrace();} catch (KeyStoreException e) {e.printStackTrace();}returnHttpClients.createDefault();}}JSON多层嵌套处理接口返回的时候,目前用得最多的方式是返回json格式,因为json格式比较成熟,包括取值,实例化等等 。这里介绍一种后端处理json返回多层嵌套的方式:
1. 实例化json数据
2. 请求Http 接口获取返回值
3. 实例化返回值并获取你想要的key或者value,或者做验证都行
优点: 实例化了数据结构,想获取任何数据都能使用实例化的方法 。不用理会它有几层,它的数据结构是什么(List, array,string等等)
缺点: 需要返回的数据结构稳定,不能返回变动的数据结构,另外实例化有一定的代码量,比较繁琐(但是有固定插件解决)
实操:
1. IDEA ---settings-----install plugins----GSON 插件
2. 新增一个entity实体类,在新建的实体类使用alt+S 快捷键打开GSON插件
3. 输入你想要实例化的JSON数据,一直下一步即可完成实例化 。
实例化截图:
「SpringBoot」 Java中如何封装Http请求

文章插图
 
Service层调用实例化:
//实例化的时候注意数据格式,List的话可以循环获取(下面的注释部分);最终存储到map里面返回Gateway gatewaydata = https://www.isolves.com/it/cxkf/yy/JAVA/2022-08-05/JSON.parseobject(res, Gateway.class);Map resMap=new HashMap<>();String value=gatewaydata.getComponent().getMeasures().get(0).getPeriods().get(0).getValue();String metric=gatewaydata.getComponent().getMeasures().get(0).getMetric();//获取各个区的名称//List clist=state.getData().get(0).getCity().get(0).getCounty();//for(Country c:clist){//System.out.println("cname:"+c.getName());//}System.out.println(value+metric);resMap.put("metric",metric);resMap.put("value",value);
【「SpringBoot」 Java中如何封装Http请求】


推荐阅读