RestTemplate: HTTP请求工具

RestTemplate是由 Spring 提供的一个 HTTP 请求工具,我们通过它来请求获取一个接口中的数据
https://c.m.163.com/ug/api/wuhan/app/data/list-total
这个是网易给的新冠疫情实时数据
我们用RestTemplate来获取数据,并进行后续的处理,封装到每一个pojo对象

1. 先导包

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpcore</artifactId>
    <version>4.3.3</version>
</dependency>

2. 写配置类 RestTemplateConfig

/**
 * RestTemplateConfig: HTTP 请求工具
 */
@Configuration
public class RestTemplateConfig {

    @Bean
    public RestTemplate getRestTemplate(){
        SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
        // ConnectTimeout只有在网络正常的情况下才有效,因此两个一般都设置
        requestFactory.setConnectTimeout(5000);	//建立连接的超时时间  5秒
        requestFactory.setReadTimeout(5000);	//传递数据的超时时间(在网络抖动的情况下,这个参数很有用)
        
        HttpHeaders headers = new HttpHeaders();
        headers.add("user-agent","Mozilla/5.0(Windows NT 10.0; Win64; x64) AppleWebKit/537.36" +
                "(KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36");
        HttpEntity<Resource> httpEntity = new HttpEntity<>(headers);
        RestTemplate restTemplate = new RestTemplate(requestFactory);
        return restTemplate;
    }
}

3. 获取数据

	@Resource
    RestTemplate restTemplate;
    
    //调用api 获得疫情数据
    public String getJSONString(){
        //请求头
        HttpHeaders headers=new HttpHeaders();
        headers.add("user-agent","Mozilla/5.0(Windows NT 10.0; Win64; x64) AppleWebkit/537.36"+
                "(KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36");
        //请求体
        HttpEntity<Resource> httpEntity=new HttpEntity<>(headers);
        String url="https://c.m.163.com/ug/api/wuhan/app/data/list-total";
        String jsonString=restTemplate.exchange(url, HttpMethod.GET,httpEntity, String.class).getBody();
        return jsonString;
    }

然后就可以获得接口中的数据了

4. 详细解析下RestTemplate是怎么用的

1. 先看看配置类

  • ClientHttpRequestFactory
    它是个函数式接口,用于根据URI和HttpMethod创建出一个ClientHttpRequest来发送请求
  • 创建请求头和请求体
    请求头是直接打开浏览器,随便找个网页打开检查,然后点开Network,随便找一条里面的Request Headers,复制里面的“User-Agent” 作为请求头
  • 然后把requestFactory放入到RestTemplate中,这样配置类就写好了

2. 具体获取

  • 重复上面这样写请求头和请求体
  • 导入工具 RestTemplate
  • 调用方法restTemplate.exchange(url, HttpMethod.GET,httpEntity, String.class).getBody();
  • url就是我们需要的接口数据
    在这里插入图片描述
    成功获得我们要的数据
    后续就对这对数据处理:
    JSONPath.read(json,path)
    
    在这里插入图片描述
    像这样就获取到了reqId
    ps:
    $ 就是根对象
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值