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
    评论
好的,下面是使用RestTemplate发送http请求,完成远程调用的流程: 1.引入RestTemplate依赖 首先,需要在项目中引入RestTemplate依赖。如果是使用Maven进行构建,只需要在pom.xml文件中添加以下依赖即可: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> ``` 2.创建RestTemplate实例 接下来,需要在代码中创建RestTemplate实例。可以使用以下方式进行创建: ```java RestTemplate restTemplate = new RestTemplate(); ``` 其中,RestTemplate是Spring提供的一个HTTP客户端工具,可以用于发送HTTP请求。 3.发送HTTP请求 使用RestTemplate发送HTTP请求非常简单,只需要调用RestTemplate的相应方法即可。例如,如果要发送一个GET请求,可以使用以下代码: ```java String result = restTemplate.getForObject(url, String.class); ``` 其中,url是请求的URL地址,String.class表示返回值的类型,getForObject方法会将请求响应的内容转换成指定类型的对象,并返回给调用方。 如果要发送POST请求,可以使用以下代码: ```java HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); HttpEntity<String> requestEntity = new HttpEntity<>(jsonData, headers); String result = restTemplate.postForObject(url, requestEntity, String.class); ``` 其中,headers是请求头信息,MediaType.APPLICATION_JSON表示请求的数据类型是JSON格式,jsonData是请求的数据,requestEntity表示请求实体,postForObject方法会将请求实体发送到指定的URL地址,并返回响应结果。 4.处理响应结果 最后,需要根据实际情况对响应结果进行处理。如果是获取字符串类型的响应结果,可以直接将其输出即可。如果是获取其他类型的响应结果,可以将其转换成相应的对象,然后进行后续的处理。 以上就是使用RestTemplate发送http请求,完成远程调用的流程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值