SpringBoot项目通过http请求接口

SpringBoot项目通过http请求接口


前言

由于部分业务需要取平台其他系统的数据,经讨论后决定通过http请求url的方式获取数据


提示:以下是本篇文章正文内容,下面案例可供参考

一、主要类和方法?

UriComponentsBuilder 是Spring Framework中的一个用于构建URI(Uniform Resource Identifier)和URL(Uniform Resource Locator)的实用程序类。它提供了一种简单的方式来构建包含各种部分(如协议、主机、路径、查询参数等)的URI和URL,并支持对这些部分进行修改、替换和合并等操作
restTemplate.exchange()使用 RestTemplate 的 exchange 方法发送 HTTP 请求,传入 URL、请求方法类型 HttpMethod.*、HttpEntity 对象和响应类型,返回ResponseEntity对象。

二、使用步骤

1.引入相应依赖

代码如下:

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>5.3.26</version>
        </dependency>

2.请求url获取登录token(若请求不需要token验证则直接请求即可)

代码如下(示例):从指定的登录URL(loginUrl)获取一个token

    public String getToken(String loginUrl,String userName,String passWord){
        //使用 UriComponentsBuilder 构建带有用户名和密码参数的请求 URL
        UriComponentsBuilder builder = UriComponentsBuilder.fromUriString(loginUrl)
                .queryParam("userName", userName)
                .queryParam("pwd", passWord);
        //使用 RestTemplate 的 exchange 方法发送 HTTP GET 请求,传入构建好的 URL、请求方法 HttpMethod.GET、null(因为这里不需要设置特定的请求头信息或实体内容)、以及响应类型 String.class
        ResponseEntity<String> responseEntity = restTemplate.exchange(builder.toUriString(), HttpMethod.GET, null, String.class);
        //获取响应的字符串形式的 body
        String body = responseEntity.getBody();
        //使用 JSON.parseObject 方法将 body 解析为一个 JSONObject 对象
        JSONObject jsonObj = JSON.parseObject(body);
        //从 JSONObject 中获取 key 为 "data" 的值,这个值是一个 String 类型的 token
        String token = (String) jsonObj.get("data");
        return token;
    }

3.请求目的url

代码如下(示例):将token放入HttpEntity中

public List<DataObj> getCoalZhDay(String sdate, String edate) {
	/*创建一个 HttpHeaders 对象,并设置 Authorization 头部为给定的 token*/
	String token = getToken.getToken(loginUrl,userName,passWord);  
    HttpHeaders headers = new HttpHeaders();
  	headers.set("Authorization", token); 
    HttpEntity<String> entity = new HttpEntity<>(headers); //创建一个 HttpEntity 对象,将上面创建的 HttpHeaders 对象作为参数传入
 
    UriComponentsBuilder builder = UriComponentsBuilder.fromUriString(getLicencePlantUrl)
            .queryParam("sdate", sdate)
            .queryParam("pageSize", 2000)
            .queryParam("edate", edate);  //使用 UriComponentsBuilder 构建请求的 URL,同时添加查询参数 sdate、pageSize 和 edate
    String s = builder.toUriString(); //将构建好的 URL 转换为一个字符串
    ResponseEntity<String> responseEntity = restTemplate.exchange(builder.toUriString(), HttpMethod.GET, entity, String.class); //使用 RestTemplate 的 exchange 方法发送 HTTP GET 请求,传入 URL、请求方法 HttpMethod.GET、HttpEntity 对象和响应类型 String.class
    String body = responseEntity.getBody(); //获取响应的字符串形式的 body
    JSONObject jsonObject = JSON.parseObject(body); //使用 JSON.parseObject 方法将 body 解析为一个 JSONObject 对象

	/**根据 jsonObject 具体值获取相应的数据,具体情况可能不同*/
    Map<String, Object> map = (Map)jsonObject.get("value"); //从 JSONObject 中获取 key 为 "value" 的值,并将其转换为一个 Map 对象
    List<Map<String, String>> value = (List) map.get("pageData"); // 从 Map 中获取 key 为 "pageData" 的值,这个值应该是一个 List<Map<String, String>> 类型的数据

	/*数据处理*/
	List<DataObj> dataObjList = new ArrayList<>();
	value.forEach(item ->{
		DataObj dataObj= new DataObj();
		
		//数据处理逻辑
		dataObjList.add(dataObj);
	}
	return dataObjList;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值