一、Maven依赖项
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>4.5.13</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>4.5.13</version>
</dependency>
二、源代码
import org.apache.http.Header;
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.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.entity.mime.HttpMultipartMode;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.entity.mime.content.ContentBody;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicHeader;
import java.io.IOException;
import java.util.Map;
public class HttpUtil {
private static Header[] parseHeaders(Map<String, String> headers) {
Header[] headersArray = new Header[headers.size()];
int i = 0;
for (Map.Entry<String, String> entry : headers.entrySet()) {
headersArray[i] = new BasicHeader(entry.getKey(), entry.getValue());
i++;
}
return headersArray;
}
private static String parseParams(Map<String, String> params) {
if (params == null || params.isEmpty()) {
return null;
}
StringBuilder sb = new StringBuilder();
for (Map.Entry<String, String> entry : params.entrySet()) {
sb.append(entry.getKey()).append("=").append(entry.getValue()).append("&");
}
return sb.toString();
}
public static CloseableHttpResponse get(String url, Map<String, String> params, Map<String, String> headers) throws IOException {
CloseableHttpClient httpClient;
httpClient = HttpClients.createDefault();
String param = parseParams(params);
if (param != null) {
url = url + "?" + param;
}
HttpGet httpGet = new HttpGet(url);
httpGet.setHeaders(parseHeaders(headers));
RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(30 * 1000)
.setConnectionRequestTimeout(30 * 1000)
.setSocketTimeout(60 * 1000)
.build();
httpGet.setConfig(requestConfig);
return httpClient.execute(httpGet);
}
public static CloseableHttpResponse post(String url, Map<String, String> params, Map<String, String> headers, HttpEntity entity) throws IOException {
CloseableHttpClient httpClient = HttpClients.createDefault();
String param = parseParams(params);
if (param != null) {
url = url + "?" + param;
}
HttpPost httpPost = new HttpPost(url);
httpPost.setHeaders(parseHeaders(headers));
RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(30 * 1000)
.setConnectionRequestTimeout(30 * 1000)
.setSocketTimeout(60 * 1000)
.build();
httpPost.setConfig(requestConfig);
httpPost.setEntity(entity);
return httpClient.execute(httpPost);
}
public static CloseableHttpResponse post(String url, Map<String, String> params, Map<String, String> headers, String data) throws IOException {
return post(url, params, headers, new StringEntity(data));
}
public static CloseableHttpResponse multipart(String url, Map<String, String> params, Map<String, String> headers, Map<String, ContentBody> data) throws IOException {
MultipartEntityBuilder multipartEntityBuilder = MultipartEntityBuilder.create();
for (Map.Entry<String, ContentBody> dataPair : data.entrySet()) {
multipartEntityBuilder.addPart(dataPair.getKey(), dataPair.getValue());
}
multipartEntityBuilder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
HttpEntity reqEntity = multipartEntityBuilder.build();
return post(url, params, headers, reqEntity);
}
}
三、备注
- 这是一个非常简易的Http请求工具类,很多功能已被写死或忽略,如有需要可根据需求自行添加。
- 部分代码有借鉴网络上的其它Http工具类。