1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- package com.jeeplus.modules.sys.web;
- import org.apache.http.Consts;
- import org.apache.http.HttpEntity;
- import org.apache.http.client.config.RequestConfig;
- import org.apache.http.client.methods.CloseableHttpResponse;
- import org.apache.http.client.methods.HttpPost;
- import org.apache.http.entity.ContentType;
- import org.apache.http.entity.mime.HttpMultipartMode;
- import org.apache.http.entity.mime.MultipartEntityBuilder;
- import org.apache.http.impl.client.CloseableHttpClient;
- import org.apache.http.impl.client.HttpClients;
- import org.apache.http.util.EntityUtils;
- import org.springframework.web.multipart.MultipartFile;
- import java.io.File;
- import java.io.IOException;
- import java.nio.file.Files;
- import java.util.Map;
- /**
- * @author wang_xy
- * @description
- * @Version 1.0
- * @params
- * @return
- * @since 2022/9/15 10:22
- */
- public class HttpResponse {
- public static String doPostFile2(String url, Map<String, String> param, File file) {
- // 创建Httpclient对象
- CloseableHttpClient httpClient = HttpClients.createDefault();
- String resultString = "";
- CloseableHttpResponse response = null;
- HttpPost httppost = new HttpPost(url);
- try {
- // HttpMultipartMode.RFC6532参数的设定是为避免文件名为中文时乱码
- MultipartEntityBuilder builder = MultipartEntityBuilder.create().setMode(HttpMultipartMode.RFC6532);
- // 设置请求的编码格式
- builder.setCharset(Consts.UTF_8);
- builder.setContentType(ContentType.MULTIPART_FORM_DATA);
- // 添加文件,也可以添加字节流
- builder.addBinaryBody("file", file);
- //或者使用字节流也行,根据具体需要使用
- // builder.addBinaryBody("file", Files.readAllBytes(file.toPath()),ContentType.APPLICATION_OCTET_STREAM,file.getName());
- // 或者builder.addPart("file",new FileBody(file));
- // 添加参数
- if (param != null) {
- for (String key : param.keySet()) {
- builder.addTextBody(key, param.get(key));
- }
- }
- HttpEntity reqEntity = builder.build();
- httppost.setEntity(reqEntity);
- // 设置超时时间
- httppost.setConfig(getConfig());
- response = httpClient.execute(httppost);
- resultString = EntityUtils.toString(response.getEntity(), "GBK");
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- try {
- response.close();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- return resultString;
- }
- private static RequestConfig getConfig() {
- return RequestConfig.custom().setConnectionRequestTimeout(60000).setSocketTimeout(120000)
- .setConnectTimeout(60000).build();
- }
- }
|