JAVA RestTemplate MultipartFile多文件上傳

簡介

本文將使用RestTemplate調(diào)用帶有MultiPartFile的多文件接口,以及GET/POST請(qǐng)求案例

1、GET請(qǐng)求

  /**
     * GET請(qǐng)求 - 獲取Token
     *
     * @return java.lang.String
     */
    public String getToken() {
        String token = null;
        JSONObject result;
        try {
            String requestUrl = "xxx?client_id=" + clientId + "&client_secret=" + clientSecret;
            ResponseEntity<String> entity = restTemplate.getForEntity(requestUrl, String.class);
            log.info("請(qǐng)求返回=========={}", entity.getBody());
            result = JSONObject.parseObject(entity.getBody());
            if ("200".equals(result.getString("resCode"))) {
                JSONObject data = JSONObject.parseObject(result.getString("data"));
                token = data.getString("access_token");
            } else {
                log.info("請(qǐng)求TOKEN錯(cuò)誤=========={}", result);
            }
        } catch (Exception e) {
            log.error("請(qǐng)求TOKEN異常=========={}", e.getMessage());
        }
        return token;
    }

2、POST請(qǐng)求

  /**
     * POS請(qǐng)求
     *
     * @param dto 傳參
     * @return JSONObject
     */
    public JSONObject doPost(ExpenseDeleteDTO dto) {
        JSONObject result;
        try {
            String requestUrl = "xxx";
            HttpHeaders headers = new HttpHeaders();
            headers.setContentType(MediaType.APPLICATION_JSON);
            headers.add("branch_code", dto.getBranchCode());
            headers.add("user_code", dto.getUserCode());
            headers.add("system_type", systemType);
            headers.add("token", dto.getToken());

            HttpEntity<Object> request = new HttpEntity<>(dto, headers);
            ResponseEntity<String> entity = restTemplate.postForEntity(requestUrl, request, String.class);
            log.info("請(qǐng)求返回=========={}", entity.getBody());
            result = JSONObject.parseObject(entity.getBody());
        } catch (Exception e) {
            log.error("請(qǐng)求異常=========={}", e.getMessage());
        }
        return result;
    }

3、POST請(qǐng)求 附帶MultipartFile

  /**
     * POST請(qǐng)求
     *
     * @param token token
     * @param files 多個(gè)文件
     * @return JSONObject
     */
    public JSONObject doPostUpload(String token, List<MultipartFile> files) {
        JSONObject result;
        try {
            String requestUrl = "xxx";
            HttpHeaders headers = new HttpHeaders();
            // 如果是文件,使用MULTIPART_FORM_DATA
            headers.setContentType(MediaType.MULTIPART_FORM_DATA);
            headers.add("token", token);

            MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
            for (MultipartFile file : files) {
                ByteArrayResource byteArrayResource = new ByteArrayResource(file.getBytes()) {
                    @Override
                    public long contentLength() {
                        return file.getSize();
                    }

                    @Override
                    public String getFilename() {
                        return file.getOriginalFilename();
                    }
                };
                params.add("files", byteArrayResource);
            }

            // 參數(shù)和請(qǐng)求頭放到請(qǐng)求體
            HttpEntity<Object> request = new HttpEntity<>(params, headers);
            ResponseEntity<String> entity = restTemplate.postForEntity(requestUrl, request, String.class);
            log.info("請(qǐng)求返回=========={}", entity.getBody());
            result = JSONObject.parseObject(entity.getBody());
        } catch (Exception e) {
            log.error("請(qǐng)求上傳OCR發(fā)票異常=========={}", e.getMessage());
        }
        return result;
    }

POSTMAN測試

image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容