package org.dromara.system.uitil; import cn.hutool.json.JSON; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpStatus; import org.apache.commons.httpclient.methods.PostMethod; import org.apache.commons.httpclient.methods.StringRequestEntity; import org.apache.commons.io.IOUtils; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; 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.HttpClientBuilder; import org.apache.http.util.EntityUtils; import org.dromara.common.oss.entity.SynchronousRequest; import org.dromara.common.oss.entity.SynchronousRequest2; import org.dromara.common.oss.entity.VideoRequest; import org.springframework.web.multipart.MultipartFile; import java.io.*; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import java.util.HashMap; public class HttpUtils { private static final String BOUNDARY = "----WebKitFormBoundary7MA4YWxkTrZu0gW"; private static final String LINE_FEED = "\r\n"; private static final String CHARSET = "UTF-8"; public static File convert(MultipartFile multipartFile) throws IOException { File file = new File(multipartFile.getOriginalFilename()); multipartFile.transferTo(file); return file; } /** * 上传同步 视频专网 -- 公安内网 * @param url * @param entity * @return * @throws IOException */ public static String sendPostRequest(String url, SynchronousRequest entity) throws IOException { org.apache.http.client.HttpClient httpClient = HttpClientBuilder.create().build(); HttpPost httpPost = new HttpPost(url); ContentType contentType = ContentType.create("multipart/form-data", StandardCharsets.UTF_8); MultipartEntityBuilder builder = MultipartEntityBuilder.create(); builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE); // 添加MultipartFile参数 builder.addBinaryBody("file", entity.getFile().getBytes(), ContentType.MULTIPART_FORM_DATA, entity.getFile().getOriginalFilename()); // 添加String参数 builder.addTextBody("path", entity.getPath(), ContentType.TEXT_PLAIN); builder.addTextBody("ossId", entity.getOssId(), ContentType.TEXT_PLAIN); builder.addTextBody("createBy", entity.getCreateBy(), ContentType.TEXT_PLAIN); builder.addTextBody("password", entity.getPassword(), ContentType.TEXT_PLAIN); builder.addTextBody("fileName", entity.getFileName(), contentType); builder.addTextBody("createTime", entity.getCreateTime(), ContentType.TEXT_PLAIN); HttpEntity multipart = builder.build(); httpPost.setEntity(multipart); HttpResponse response = httpClient.execute(httpPost); String responseBody = EntityUtils.toString(response.getEntity()); System.out.println("Response: " + responseBody); return responseBody; } /** * 上传同步 视频专网 * @param url * @param entity * @return * @throws IOException */ public static String sendPostRequest2(String url, VideoRequest entity) throws IOException { org.apache.http.client.HttpClient httpClient = HttpClientBuilder.create().build(); HttpPost httpPost = new HttpPost(url); ContentType contentType = ContentType.create("multipart/form-data", StandardCharsets.UTF_8); MultipartEntityBuilder builder = MultipartEntityBuilder.create(); builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE); // 添加MultipartFile参数 builder.addBinaryBody("file", entity.getFile().getBytes(), ContentType.MULTIPART_FORM_DATA, entity.getFile().getOriginalFilename()); // 添加String参数 builder.addTextBody("fileName", entity.getFileName(), contentType); HttpEntity multipart = builder.build(); httpPost.setEntity(multipart); HttpResponse response = httpClient.execute(httpPost); String responseBody = EntityUtils.toString(response.getEntity()); System.out.println("Response: " + responseBody); return responseBody; } /** * 删除同步 * @param url // * @param parameter * @throws Exception */ public static String sendDeleteRequest(String url, String ossId) throws IOException { org.apache.http.client.HttpClient httpClient = HttpClientBuilder.create().build(); HttpPost httpPost = new HttpPost(url); MultipartEntityBuilder builder = MultipartEntityBuilder.create(); builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE); // 添加MultipartFile参数 // builder.addBinaryBody("file", entity.getFile().getBytes(), ContentType.MULTIPART_FORM_DATA, entity.getFile().getOriginalFilename()); // 添加String参数 builder.addTextBody("ossId", ossId, ContentType.TEXT_PLAIN); HttpEntity multipart = builder.build(); httpPost.setEntity(multipart); HttpResponse response = httpClient.execute(httpPost); String responseBody = EntityUtils.toString(response.getEntity()); System.out.println("Response: " + responseBody); return responseBody; } /** * 上传同步 视频专网 -- 公安内网(定时) * @param url * @param entity * @return * @throws IOException */ public static String sendPostRequest2(String url, SynchronousRequest entity, byte[] bytes) throws IOException { org.apache.http.client.HttpClient httpClient = HttpClientBuilder.create().build(); HttpPost httpPost = new HttpPost(url); ContentType contentType = ContentType.create("multipart/form-data", StandardCharsets.UTF_8); MultipartEntityBuilder builder = MultipartEntityBuilder.create(); builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE); // 添加MultipartFile参数 builder.addBinaryBody("file", bytes, ContentType.MULTIPART_FORM_DATA, entity.getFileName()); // 添加String参数 builder.addTextBody("path", entity.getPath(), ContentType.TEXT_PLAIN); builder.addTextBody("ossId", entity.getOssId(), ContentType.TEXT_PLAIN); builder.addTextBody("createBy", entity.getCreateBy(), ContentType.TEXT_PLAIN); builder.addTextBody("password", entity.getPassword(), ContentType.TEXT_PLAIN); builder.addTextBody("fileName", entity.getFileName(), contentType); builder.addTextBody("createTime", entity.getCreateTime(), ContentType.TEXT_PLAIN); HttpEntity multipart = builder.build(); httpPost.setEntity(multipart); HttpResponse response = httpClient.execute(httpPost); String responseBody = EntityUtils.toString(response.getEntity()); System.out.println("Response: " + responseBody); return responseBody; } /** * @param input 输入流 * @return byte[] 数组 */ public static byte[] inputStream2byte(InputStream input) throws IOException { ByteArrayOutputStream output = new ByteArrayOutputStream(); byte[] buffer = new byte[4096]; int n = 0; while (-1 != (n = input.read(buffer))) { output.write(buffer, 0, n); } return output.toByteArray(); } }