JAVA使用http包进行url接口调用以及返回值处理 HttpEntity ResponseEntity

一个request包含 header和request body,我们用 HttpEntity<body,header>来构造一个请求发出request之后会得到 response 用ResponseEntity来接收返回内容在发送请求的时候,可以使用 HttpClient RestTemplate OkHttp 一个文章看下三者的区别和使用方法。 这里用的okhttpRestTemplate 是自己写的一个util 基本用法和 restTemplate一样。https://blog.
摘要由CSDN通过智能技术生成

一个request包含 header和request body,我们用 HttpEntity<body,header>来构造一个请求
发出request之后会得到 response 用ResponseEntity来接收返回内容

在发送请求的时候,可以使用 HttpClient RestTemplate OkHttp 一个文章看下三者的区别和使用方法。 这里用的okhttpRestTemplate 是自己写的一个util 基本用法和 restTemplate一样。
https://blog.csdn.net/qq_33326449/article/details/107442642

    public void orderCenterAlter(OrderAlterVo vo) throws Exception {
   
        // vo为要被传出去的request内容 是一个json类型 可以转为string用logger记录一下
        logger.info("OI0023 request::" + JSON.toJSONString(vo));
        // 构造headers
        HttpHeaders headers = new HttpHeaders();
        headers.add("Content-Type", xxxxrHead);
        //   xxxHeader: application/json;c
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,下面是一个使用RestTemplate限流调用第三方HTTP接口获取接口返回值,并利用MyBatis-Plus将接口响应报文写入MySQL数据库的示例代码: 首先,需要在pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.23</version> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.3.1</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-circuitbreaker-resilience4j</artifactId> </dependency> ``` 接着,在application.properties文件中添加以下配置: ```properties # 配置第三方API的URL api.url=http://example.com/api # 配置限流规则 resilience4j.circuitbreaker.instances.default.slidingWindowSize=10 resilience4j.circuitbreaker.instances.default.minimumNumberOfCalls=5 resilience4j.circuitbreaker.instances.default.failureRateThreshold=50 resilience4j.circuitbreaker.instances.default.waitDurationInOpenState=5000 resilience4j.circuitbreaker.instances.default.slowCallRateThreshold=100 resilience4j.circuitbreaker.instances.default.slowCallDurationThreshold=1000 # 配置数据库连接 spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8 spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver # 配置MyBatis-Plus mybatis-plus.mapper-locations=classpath*:mapper/**/*.xml mybatis-plus.type-aliases-package=com.example.demo.entity ``` 然后,创建一个名为ApiService的类,用于调用第三方API: ```java @Service public class ApiService { @Autowired private RestTemplate restTemplate; @Value("${api.url}") private String apiUrl; @Retry(name = "apiServiceRetry", fallbackMethod = "fallback") @CircuitBreaker(name = "apiServiceCircuitBreaker", fallbackMethod = "fallback") public String callApi() { ResponseEntity<String> response = restTemplate.getForEntity(apiUrl, String.class); return response.getBody(); } public String fallback(Throwable t) { return "fallback"; } } ``` 在上面的代码中,我们使用了Resilience4j框架提供的注解@Retry和@CircuitBreaker来实现重试和熔断功能。如果第三方API调用失败,会自动重试一定次数(默认为3次),如果重试仍然失败,则进入熔断状态。在熔断状态下,调用fallback方法返回一个默认值。 接下来,创建一个名为ApiResponse的实体类,用于封装接口响应报文: ```java @Data public class ApiResponse { private String response; } ``` 然后,创建一个名为ApiDao的Mapper接口,用于定义数据访问方法: ```java @Mapper public interface ApiDao extends BaseMapper<ApiResponse> { } ``` 接着,创建一个名为ApiService的Service类,用于调用第三方API并将响应报文写入数据库: ```java @Service public class ApiService { @Autowired private RestTemplate restTemplate; @Autowired private ApiDao apiDao; @Value("${api.url}") private String apiUrl; @Retry(name = "apiServiceRetry", fallbackMethod = "fallback") @CircuitBreaker(name = "apiServiceCircuitBreaker", fallbackMethod = "fallback") public String callApi() { ResponseEntity<String> response = restTemplate.getForEntity(apiUrl, String.class); ApiResponse apiResponse = new ApiResponse(); apiResponse.setResponse(response.getBody()); apiDao.insert(apiResponse); return response.getBody(); } public String fallback(Throwable t) { return "fallback"; } } ``` 在上面的代码中,我们使用了MyBatis-Plus提供的BaseMapper接口进行数据库操作,调用insert方法将ApiResponse对象写入数据库。 最后,在Controller中使用ApiService类进行调用: ```java @RestController public class ApiController { @Autowired private ApiService apiService; @GetMapping("/api") public String api() { return apiService.callApi(); } } ``` 这样,我们就完成了一个使用RestTemplate限流调用第三方HTTP接口获取接口返回值,并利用MyBatis-Plus将接口响应报文写入MySQL数据库的SpringBoot项目。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值