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.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.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 {
|
public static String sendPostWithJson(String url, String jsonStr, HashMap<String,String> headers) {
|
// 返回的结果
|
String jsonResult = "";
|
try {
|
HttpClient client = new HttpClient();
|
// 连接超时
|
client.getHttpConnectionManager().getParams().setConnectionTimeout(3*1000);
|
// 读取数据超时
|
client.getHttpConnectionManager().getParams().setSoTimeout(3*60*1000);
|
client.getParams().setContentCharset("UTF-8");
|
PostMethod postMethod = new PostMethod(url);
|
|
postMethod.setRequestHeader("content-type", headers.get("content-type"));
|
|
// 非空
|
if (null != jsonStr && !"".equals(jsonStr)) {
|
StringRequestEntity requestEntity = new StringRequestEntity(jsonStr, headers.get("content-type"), "UTF-8");
|
postMethod.setRequestEntity(requestEntity);
|
}
|
int status = client.executeMethod(postMethod);
|
if (status == HttpStatus.SC_OK) {
|
jsonResult = postMethod.getResponseBodyAsString();
|
} else {
|
throw new RuntimeException("接口连接失败!");
|
}
|
} catch (Exception e) {
|
throw new RuntimeException("接口连接失败!");
|
}
|
return jsonResult;
|
}
|
|
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;
|
}
|
|
public static void sendPostRequest(String url, String stringParam, File fileParam) throws Exception {
|
|
URL obj = new URL(url);
|
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
|
|
// 设置POST请求
|
con.setRequestMethod("POST");
|
con.setDoOutput(true);
|
con.setDoInput(true);
|
con.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + BOUNDARY);
|
|
// 构建请求体
|
DataOutputStream wr = new DataOutputStream(con.getOutputStream());
|
wr.writeBytes("--" + BOUNDARY + LINE_FEED);
|
wr.writeBytes("Content-Disposition: form-data; name=\"stringParam\"" + LINE_FEED);
|
wr.writeBytes(LINE_FEED);
|
wr.writeBytes(stringParam + LINE_FEED);
|
|
wr.writeBytes("--" + BOUNDARY + LINE_FEED);
|
wr.writeBytes("Content-Disposition: form-data; name=\"fileParam\"; filename=\"" + fileParam.getName() + "\"" + LINE_FEED);
|
wr.writeBytes("Content-Type: " + HttpURLConnection.guessContentTypeFromName(fileParam.getName()) + LINE_FEED);
|
wr.writeBytes("Content-Transfer-Encoding: binary" + LINE_FEED);
|
wr.writeBytes(LINE_FEED);
|
|
FileInputStream inputStream = new FileInputStream(fileParam);
|
byte[] buffer = new byte[4096];
|
int bytesRead = -1;
|
while ((bytesRead = inputStream.read(buffer)) != -1) {
|
wr.write(buffer, 0, bytesRead);
|
}
|
wr.writeBytes(LINE_FEED);
|
wr.writeBytes("--" + BOUNDARY + "--" + LINE_FEED);
|
|
wr.flush();
|
wr.close();
|
|
// 发送请求并获取响应
|
int responseCode = con.getResponseCode();
|
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
|
String inputLine;
|
StringBuffer response = new StringBuffer();
|
while ((inputLine = in.readLine()) != null) {
|
response.append(inputLine);
|
}
|
in.close();
|
|
// 打印响应结果
|
System.out.println("Response Code : " + responseCode);
|
System.out.println("Response : " + response.toString());
|
}
|
|
/**
|
* 上传同步
|
* @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(),);
|
|
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;
|
}
|
}
|