• 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) {
                @Override
                public 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);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81

    2.调用

    @org.springframework.stereotype.Service
    @Service(version = "1.0.0")
    @Slf4j
    public class OcrServiceImpl implements OcrService {
    
    @Resource
        private RedissonClient redissonClient;
    
        @Autowired
        private 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"));
                }
    
    }
    
    
    }
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
  • 相关阅读:
    英语六级-day7
    Python接口自动化测试:利用的是requests库,Fiddler抓包配合、以及鉴权的流程
    分布式共识算法及落地
    【PCIE702-1】基于Kintex UltraScale系列FPGA的高性能PCIe总线数据预处理载板
    C语言自动生成代码注释:koroFileHeader插件
    【Spring AOP】统一异常处理
    【SpringCloud】LoadBalance负载均衡服务调用快速入门
    工业智能网关BL110应用之三十: 如何连接配置MQTT Client One服务器
    【luogu P4218】珠宝商(SAM)(点分治)(根号分治)
    自定义MVC增删改查
  • 原文地址:https://blog.csdn.net/weixin_44372802/article/details/132620809