java实现调用第三方接口post请求多文件上传文件

项目过程中,经常会有和第三方接口打交道的过程,今天实现调用第三方上传文件的接口!!

个人小习惯与君分享:

通常拿到第三方的接口文档的时候,不是第一时间先写代码,而是详细阅读接口文档。若接口需要第三方提供的基本参数,例如signkey,secrect等,也可以是其他的,查看文档里是否提供。再用工具(postman、swagger)构建接口请求参数进行接口测试,测试成功后, 再开始写代码!!!

1.第三方上传文件接口说明

请求方式:post
请求参数:

请求参数格式:
{
	"file": ""(文件),
	"file": ""(如需要可进行多文件上传)
}

返回参数:

{
        "fileFlag": "1",    //fileFlag: "0"代表失败;”1“代表成功
        "attachmentId": [
            "B3340EC8-2559-4459"
        ],
        "message": "上传成功"
    }

2.java实现第三方文件上传,支持多文件

文件上传,参数用MultipartFile类型接受

单文件  :MultipartFile file
多文件 :MultipartFile[] file
  • 编写contoller层接口

接口是post请求方式,参数用MultipartFile类型接受

    @ApiOperation(value = "多文件上传")
    @PostMapping("/upload/file")
    public RtnResult<Object> uploadAttatchmentFile(MultipartFile[] file) {
        return mailService.uploadAttatchmentFile(file);
    }
  • 编写service成方法

逻辑:
a.先构建请求URL
b. 按第三方接口文档处理多文件上传请求参数,构建HttpHeaders,HttpEntity
c.使用RestTemplate请求第三方接口
d.处理返回结果

    public RtnResult<Object> uploadAttatchmentFile(MultipartFile[] files) {
           String url = urlPrefix + UPLOAD_ATTACHMENT_FILE_URL;
        MultiValueMap<String, Object> param = new LinkedMultiValueMap<>();
        for (MultipartFile file : files) {
            param.add("file", file.getResource());
        }
        RestTemplate request = new RestTemplate();
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.MULTIPART_FORM_DATA);
        HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(param, headers);
        ResponseEntity<Map> response = request.postForEntity(url, requestEntity, Map.class);
        if (response.getStatusCode() != HttpStatus.OK) {
           return  (RtnResult.errorCodeMsg.SERVER_ERROR);
        }
        Map result  = response.getBody();
        return RtnResult.success(result);
    }
  • postMan接口测试
    接口写好,用postman进行接口测试,测试接口是否能上传多文件
    多文件上传

通过上述操作、测试,成功调用第三方上传文件接口!!!👍👍👍

Java可以使用HttpURLConnection或者HttpClient等类库来实现调用第三方API的GET和POST请求。 GET请求示例: ```java import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; public class GetRequestExample { public static void main(String[] args) { try { URL url = new URL("https://api.example.com/data"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setRequestProperty("Accept", "application/json"); if (conn.getResponseCode() != 200) { throw new RuntimeException("Failed : HTTP error code : " + conn.getResponseCode()); } BufferedReader br = new BufferedReader(new InputStreamReader((conn.getInputStream()))); String output; System.out.println("Output from Server .... \n"); while ((output = br.readLine()) != null) { System.out.println(output); } conn.disconnect(); } catch (Exception e) { e.printStackTrace(); } } } ``` POST请求示例: ```java import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.io.OutputStream; import java.nio.charset.StandardCharsets; public class PostRequestExample { public static void main(String[] args) { try { URL url = new URL("https://api.example.com/data"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("POST"); conn.setRequestProperty("Content-Type", "application/json"); conn.setRequestProperty("Accept", "application/json"); conn.setDoOutput(true); String requestBody = "{\"name\":\"John\",\"age\":30,\"city\":\"New York\"}"; try (OutputStream os = conn.getOutputStream()) { byte[] input = requestBody.getBytes(StandardCharsets.UTF_8); os.write(input, 0, input.length); } if (conn.getResponseCode() != 200) { throw new RuntimeException("Failed : HTTP error code : " + conn.getResponseCode()); } BufferedReader br = new BufferedReader(new InputStreamReader((conn.getInputStream()))); String output; System.out.println("Output from Server .... \n"); while ((output = br.readLine()) != null) { System.out.println(output); } conn.disconnect(); } catch (Exception e) { e.printStackTrace(); } } } ``` 这里以调用JSON格式的API接口为例,请求头中设置了Accept为"application/json",请求体中的数据也是JSON格式的。POST请求需要设置请求方法为"POST",同时需要设置请求头中的Content-Type为"application/json",并且需要将请求体数据写入到请求输出流中。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值