
com.weicoder.common.http.impl.Jdk11Http Maven / Gradle / Ivy
package com.weicoder.common.http.impl;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.http.HttpClient.Version;
import java.net.http.HttpRequest.BodyPublishers;
import java.util.Map;
import com.weicoder.common.C;
import com.weicoder.common.U;
import com.weicoder.common.U.S;
import com.weicoder.common.http.base.BaseHttp;
import com.weicoder.common.W;
import com.weicoder.common.log.Logs;
/**
* http jdk11的实现
*
* @author wudi
*/
public class Jdk11Http extends BaseHttp {
// 全局HttpClient
private final HttpClient CLIENT = HttpClient.newBuilder().version(Version.HTTP_2).build();
@Override
public byte[] download(String url, Map header) {
try {
// 获得HttpRequest构建器
HttpRequest.Builder builder = HttpRequest.newBuilder(URI.create(url));
// 头不为空,添加头
if (U.E.isNotEmpty(header))
for (Map.Entry h : header.entrySet())
builder.setHeader(h.getKey(), W.C.toString(h.getValue()));
// HttpRequest
HttpRequest request = builder.GET().build();
// 请求
HttpResponse response = CLIENT.send(request, HttpResponse.BodyHandlers.ofByteArray());
// 返回结果
return response.body();
} catch (Exception e) {
Logs.error(e, "Jdk11Http download url={}", url);
}
return C.A.BYTES_EMPTY;
}
@Override
public String post(String url, Map data, Map header) {
try {
// 请求body
String body = S.add("?", S.toParameters(data));
// // 判断有参数提交
// if (U.E.isNotEmpty(data)) {
// // 声明字符串缓存
// StringBuilder sb = new StringBuilder("?");
// // 循环参数
// data.entrySet().forEach(e -> sb.append(e.getKey()).append("=").append(e.getValue()).append("&"));
// body = sb.substring(0, sb.length() - 1);
// }
// 获得HttpRequest构建器
HttpRequest.Builder builder = HttpRequest.newBuilder(URI.create(url + body));
// 头不为空,添加头
if (U.E.isNotEmpty(header))
header.forEach((k, v) -> builder.setHeader(k, W.C.toString(v)));
// HttpRequest
HttpRequest request = builder.POST(BodyPublishers.noBody()).build();
// 请求
HttpResponse response = CLIENT.send(request, HttpResponse.BodyHandlers.ofString());
// 使用GZIP一般服务器支持解压获得的流 然后转成字符串 一般为UTF-8
// String res = response.body();
// Logs.debug("Jdk11Http post url={} data={} header={} res={}", url, data, header, res);
return response.body();
} catch (Exception e) {
Logs.error(e, "Jdk11Http post url={} data={} header={}", url, data, header);
}
return C.S.EMPTY;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy