url:接口路径
headers:可传空map
params:可传空map
multipartFiles:文件数组
fileParName:文件名
public static String sendFilePost(String url, Map<String, String> headers, Map<String, String> params, List<MultipartFile> multipartFiles, String fileParName) {
CloseableHttpClient httpclient = HttpClients.createDefault();
HttpPost httppost = new HttpPost(url);
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
builder.setCharset(StandardCharsets.UTF_8);
// 构建文件参数
String fileName;
MultipartFile multipartFile;
for (int i = 0; i < multipartFiles.size(); i++) {
// 文件
multipartFile = multipartFiles.get(i);
fileName = multipartFile.getOriginalFilename();
InputStream inputStream = null;
try {
inputStream = multipartFile.getInputStream();
} catch (IOException e) {
e.printStackTrace();
}
// 第一个参数为 相当于 Form表单提交的file框的name值 第二个参数就是我们要发送的InputStream对象了 第三个参数是文件名
builder.addBinaryBody(fileParName, inputStream, ContentType.MULTIPART_FORM_DATA, fileName);// 文件流
}
// 构建请求参数 普通表单项
// 解决决中文乱码
ContentType contentType = ContentType.create(HTTP.PLAIN_TEXT_TYPE, Consts.UTF_8);
if (null != params && params.size() > 0) {
for (Map.Entry<String, String> entry : params.entrySet()) {
httppost.addHeader(entry.getKey(), entry.getValue());
builder.addTextBody(entry.getKey(), entry.getValue(), contentType);
}
}
org.apache.http.HttpEntity entity = builder.build();
httppost.setEntity(entity);
// 请求头设置
if (null != headers && headers.size() > 0) {
for (Map.Entry<String, String> entry : headers.entrySet()) {
httppost.addHeader(entry.getKey(), entry.getValue());
}
}
CloseableHttpResponse response;
try {
response = httpclient.execute(httppost);
} catch (IOException e) {
e.printStackTrace();
return null;
}
String result = null;
try {
if (response != null) {
org.apache.http.HttpEntity httpEntity = response.getEntity();
if (httpEntity != null && response.getStatusLine().getStatusCode() == HttpURLConnection.HTTP_OK) {// 判断请求状态
result = EntityUtils.toString(httpEntity);
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (response != null) {
response.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
System.out.println("请求的URL:" + url + ", 返回结果:" + result);
return result;
}
调用三方上传文件接口 post
于 2024-06-05 17:45:53 首次发布