当前位置: 首页 > news >正文

java里面封装https请求工具类

1.工具类如下

@Component
@Slf4j
public class RestClientUtil<T> {private final RestTemplate restTemplate;public RestClientUtil() {this.restTemplate = new RestTemplate();}public JSONObject uploadFile(String url, String fileUrl) throws IOException {List<HttpMessageConverter<?>> messageConverters = new ArrayList<>();messageConverters.add(new MappingJackson2HttpMessageConverter());messageConverters.add(new FormHttpMessageConverter());messageConverters.add(new FastJsonHttpMessageConverter());restTemplate.setMessageConverters(messageConverters);// 构建请求体MultipartBodyBuilder bodyBuilder = new MultipartBodyBuilder();File file = new File(fileUrl);Path filePath = Paths.get(file.getAbsolutePath());byte[] fileBytes = Files.readAllBytes(filePath);bodyBuilder.part("data", new ByteArrayResource(fileBytes) {@Overridepublic String getFilename() {return file.getName();}}, MediaType.MULTIPART_FORM_DATA);HttpHeaders headers = new HttpHeaders();headers.setContentType(MediaType.MULTIPART_FORM_DATA);HttpEntity<MultiValueMap<String, HttpEntity<?>>> requestEntity = new HttpEntity<>(bodyBuilder.build(), headers);// 发送请求并处理响应ResponseEntity<JSONObject> exchange = restTemplate.exchange(url, HttpMethod.POST, requestEntity, JSONObject.class);if (exchange.getStatusCode() == HttpStatus.OK) {return exchange.getBody();}return null;}public ResponseEntity<T> get(String url, Class<T> responseType) {HttpHeaders headers = new HttpHeaders();HttpEntity<String> requestEntity = new HttpEntity<>(headers);return restTemplate.exchange(url, HttpMethod.GET, requestEntity, responseType);}public <T> T post(String url, MultiValueMap<String, String> requestBody, Class<T> responseType) {HttpHeaders headers = new HttpHeaders();headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<>(requestBody, headers);ResponseEntity<T> responseEntity = restTemplate.postForEntity(url,requestEntity,responseType);return responseEntity.getBody();}public ResponseEntity<T> delete(String url, Class<T> responseType) {HttpHeaders headers = new HttpHeaders();HttpEntity<String> requestEntity = new HttpEntity<>(headers);return restTemplate.exchange(url, HttpMethod.DELETE, requestEntity, responseType);}public ResponseEntity<T> put(String url, Object body, Class<T> responseType) {HttpHeaders headers = new HttpHeaders();headers.setContentType(MediaType.APPLICATION_JSON);HttpEntity<Object> requestEntity = new HttpEntity<>(body, headers);return restTemplate.exchange(url, HttpMethod.PUT, requestEntity, responseType);}
}

2.调用

@org.springframework.stereotype.Service
@Service(version = "1.0.0")
@Slf4j
public class OcrServiceImpl implements OcrService {@Resourceprivate RedissonClient redissonClient;@Autowiredprivate RestClientUtil<JSONObject> restClientUtil;public BaseResponseVo<String> getLicenseInfo(OcrDTO ocrDTO) throws IOException {
JSONObject imgResult = restClientUtil.uploadFile(imgUrl + "?appkey=" + keyMapping.get(ocrDTO.getOcrType()), imagePath);MultiValueMap<String, String> paramsMap = new LinkedMultiValueMap<>();paramsMap.set("key", keyMapping.get(ocrDTO.getOcrType()));paramsMap.set("imageId", imgResult.getString("data"));JSONObject resultData = restClientUtil.post(url + typeMapping.get(ocrDTO.getOcrType()), paramsMap, JSONObject.class);if (!"10000".equals(resultData.getString("code"))) {return BaseResponseVo.error(imgResult.getString("code"), imgResult.getString("message"));}}}
http://www.lryc.cn/news/152368.html

相关文章:

  • uniApp常见面试题-附详细答案
  • Java“牵手”1688整店商品API接口数据,通过店铺ID获取整店商品详情数据,1688店铺所有商品API申请指南
  • 数据进制的转换
  • 如何分析识别文章/内容中高频词和关键词?
  • Windows7安装SSH客户端的解决方案
  • 力扣:81. 搜索旋转排序数组 II(Python3)
  • TCP IP网络编程(三) 地址族与数据序列
  • 对比Flink、Storm、Spark Streaming 的反压机制
  • Ubuntu常用配置集合
  • 传统三维重建和深度学习三维重建 MVS笔记总结、问题总结
  • Ansible学习笔记10
  • 肖sir__linux详解__002(系统命令)
  • AI绘画:StableDiffusion实操教程-斗罗大陆2-江楠楠-常服(附高清图下载)
  • JavaScript运行机制与实践应用
  • 【算法奥义】最大矩形问题
  • 06 Kafka线上集群部署方案
  • flex-shrink计算题
  • Springboot - 5.Bean的生命周期
  • 华为云 sfs 服务浅谈
  • CSS中如何实现元素的渐变背景(Gradient Background)效果?
  • buildroot修改内核防止清理重新加载办法
  • Vue框架--Vue中的事件
  • 1921. 消灭怪物的最大数量
  • 创建一个空的vue项目,配置及步骤
  • 一篇文章教会你如何编写一个简单的Shell脚本
  • SSM框架-spring
  • 聊一下C#中的lock
  • 学会Mybatis框架:让你的开发事半功倍【五.Mybatis关系映射】
  • 《TCP/IP网络编程》阅读笔记--基于Windows实现Hello Word服务器端和客户端
  • Java-Optional类