![JAR search and dependency download from the Maven repository](/logo.png)
com.nineya.tool.http.HttpClient Maven / Gradle / Ivy
package com.nineya.tool.http;
import java.io.*;
import java.net.HttpURLConnection;
import java.util.HashMap;
import java.util.Map;
/**
* 创建http请求客户端
*/
public class HttpClient extends AbstractHttpRequest {
/**
* 发送http请求方法
*
* @param request
* @return
*/
private static HttpResponse send(HttpRequest request) {
PrintWriter out = null;
try {
HttpURLConnection connect = (HttpURLConnection) request.getUrl().openConnection();
for (Map.Entry entry : request.getHeader().entrySet()) {
connect.setRequestProperty(entry.getKey(), entry.getValue());
}
if (request.getTimeout() != 0) {
connect.setReadTimeout(request.getTimeout());
}
// 设置请求格式
connect.setRequestMethod(request.getMethod());
// 发送请求body参数
if (request.getBody() != null) {
connect.setDoInput(true);
connect.setDoOutput(true);
// 获取URLConnection对象对应的输出流
out = new PrintWriter(connect.getOutputStream());
out.println(request.getBody());
// flush输出流的缓冲
out.flush();
}
// 定义BufferedReader输入流来读取URL的响应
InputStream inputStream = connect.getInputStream();
int buffSize = inputStream.available();
ByteArrayOutputStream outputStream = new ByteArrayOutputStream(buffSize);
byte[] bytes = new byte[buffSize];
int size = 0;
while ((size = inputStream.read(bytes)) != -1) {
outputStream.write(bytes, 0, size);
}
byte[] results = outputStream.toByteArray();
outputStream.close();
inputStream.close();
return new HttpResponse()
.setBody(results)
.setStatus(connect.getResponseCode());
} catch (IOException e) {
e.printStackTrace();
} finally {
if (out != null) {
out.close();
}
}
return null;
}
/**
* 执行参数处理
* 将
*
* @param request
* @return
*/
public HttpResponse execute(HttpRequest request) {
request.setHeader(coverCollection(getHeader(), request.getHeader()));
request.setParams(coverCollection(getParams(), request.getParams()));
if (request.getTimeout() == 0) {
request.setTimeout(getTimeout());
}
return send(request);
}
/**
* 将两个map合并到一个新的map中
* 在新的 map 中 addMap 中的参数内容将覆盖 sourceMap 中的内容
*
* @param sourceMap
* @param addMap
* @param
* @param
* @return
*/
private Map coverCollection(Map sourceMap, Map addMap) {
if (sourceMap == null) {
if (addMap == null) {
return new HashMap<>();
}
return new HashMap<>(addMap);
}
if (addMap == null) {
return new HashMap<>(sourceMap);
}
Map map = new HashMap<>(sourceMap);
map.putAll(addMap);
return map;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy