java 调用第三方接口,上传附件简单例子
假设调用的第三方接口为上传.jpg,.jpeg附件,以文件流形式上传,无其它参数。
比如第三方接口为c#开发,接口参数为:
/// <summary> /// 上传附件 /// </summary> /// <param name="formCollection"></param> /// <returns></returns> [HttpPost("UploadFile")] [RequestSizeLimit(10_000_000)] [AllowAnonymous] public async Task<WebApiResult> UploadFile([FromForm] IFormCollection formCollection) { ...
实现逻辑:
a.先构建请求URL
b. 按第三方接口文档处理多文件上传请求参数,构建HttpHeaders,HttpEntity
c.使用RestTemplate请求第三方接口
d.处理返回结果
@PostMapping("/UploadFile")
public String UploadFile(@RequestParam("file") MultipartFile multipartFile) throws Exception {
try {
String url="http://***/UploadFile";
if( !multipartFile.getResource().exists())
return "文件不存在";
String[] extObjs={".jpg",".jpeg"};
String fileName = multipartFile.getOriginalFilename();
String ext = FileUtil.getFileExt(fileName);
if (!Arrays.asList(extObjs).contains(ext))
return "文件为空或文件格式不正确!";
MultiValueMap<String, Object> param = new LinkedMultiValueMap<>();
param.add("file", multipartFile.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 "返回状态码:"+ response.getStatusCode();
}
Map result = response.getBody();
return JSON.toJSONString(result);
} catch (Exception ex) {
return ex.getMessage() ;
}
}
运行项目,使用postman测试:


浙公网安备 33010602011771号