This commit is contained in:
Looly 2024-01-18 16:27:19 +08:00
parent 50367a4a9f
commit c84db9070a
4 changed files with 65 additions and 42 deletions

View File

@ -29,6 +29,7 @@ import org.apache.http.message.BasicHeader;
import org.dromara.hutool.core.io.IoUtil;
import org.dromara.hutool.core.lang.Assert;
import org.dromara.hutool.core.net.url.UrlBuilder;
import org.dromara.hutool.core.util.ObjUtil;
import org.dromara.hutool.http.GlobalHeaders;
import org.dromara.hutool.http.HttpException;
import org.dromara.hutool.http.client.ClientConfig;
@ -108,19 +109,17 @@ public class HttpClient4Engine implements ClientEngine {
}
final HttpClientBuilder clientBuilder = HttpClients.custom();
final ClientConfig config = this.config;
if (null != config) {
// SSL配置
final SSLInfo sslInfo = config.getSslInfo();
if (null != sslInfo) {
clientBuilder.setSSLSocketFactory(buildSocketFactory(sslInfo));
}
if(config.isDisableCache()){
clientBuilder.disableAuthCaching();
}
clientBuilder.setDefaultRequestConfig(buildRequestConfig(config));
final ClientConfig config = ObjUtil.defaultIfNull(this.config, ClientConfig::of);
// SSL配置
final SSLInfo sslInfo = config.getSslInfo();
if (null != sslInfo) {
clientBuilder.setSSLSocketFactory(buildSocketFactory(sslInfo));
}
if(config.isDisableCache()){
clientBuilder.disableAuthCaching();
}
clientBuilder.setDefaultRequestConfig(buildRequestConfig(config));
// 设置默认头信息
clientBuilder.setDefaultHeaders(toHeaderList(GlobalHeaders.INSTANCE.headers()));

View File

@ -32,6 +32,7 @@ import org.apache.hc.core5.http.message.BasicHeader;
import org.dromara.hutool.core.io.IoUtil;
import org.dromara.hutool.core.lang.Assert;
import org.dromara.hutool.core.net.url.UrlBuilder;
import org.dromara.hutool.core.util.ObjUtil;
import org.dromara.hutool.http.GlobalHeaders;
import org.dromara.hutool.http.HttpException;
import org.dromara.hutool.http.client.ClientConfig;
@ -113,13 +114,11 @@ public class HttpClient5Engine implements ClientEngine {
final HttpClientBuilder clientBuilder = HttpClients.custom();
final ClientConfig config = this.config;
if (null != config) {
clientBuilder.setConnectionManager(buildConnectionManager(config));
clientBuilder.setDefaultRequestConfig(buildRequestConfig(config));
if(config.isDisableCache()){
clientBuilder.disableAuthCaching();
}
final ClientConfig config = ObjUtil.defaultIfNull(this.config, ClientConfig::of);
clientBuilder.setConnectionManager(buildConnectionManager(config));
clientBuilder.setDefaultRequestConfig(buildRequestConfig(config));
if(config.isDisableCache()){
clientBuilder.disableAuthCaching();
}
// 设置默认头信息

View File

@ -14,6 +14,7 @@ package org.dromara.hutool.http.client.engine.okhttp;
import okhttp3.OkHttpClient;
import org.dromara.hutool.core.io.IORuntimeException;
import org.dromara.hutool.core.util.ObjUtil;
import org.dromara.hutool.http.client.ClientConfig;
import org.dromara.hutool.http.client.Request;
import org.dromara.hutool.http.client.Response;
@ -84,30 +85,28 @@ public class OkHttpEngine implements ClientEngine {
final OkHttpClient.Builder builder = new OkHttpClient.Builder();
final ClientConfig config = this.config;
if (null != config) {
// 连接超时
final int connectionTimeout = config.getConnectionTimeout();
if (connectionTimeout > 0) {
builder.connectTimeout(connectionTimeout, TimeUnit.MILLISECONDS);
}
// 读写超时
final int readTimeout = config.getReadTimeout();
if (readTimeout > 0) {
// 读写共用读取超时
builder.readTimeout(config.getReadTimeout(), TimeUnit.MILLISECONDS)
.writeTimeout(config.getReadTimeout(), TimeUnit.MILLISECONDS);
}
// SSL
final SSLInfo sslInfo = config.getSslInfo();
if (null != sslInfo) {
builder.sslSocketFactory(sslInfo.getSocketFactory(), sslInfo.getTrustManager());
}
// 设置代理
setProxy(builder, config);
final ClientConfig config = ObjUtil.defaultIfNull(this.config, ClientConfig::of);
// 连接超时
final int connectionTimeout = config.getConnectionTimeout();
if (connectionTimeout > 0) {
builder.connectTimeout(connectionTimeout, TimeUnit.MILLISECONDS);
}
// 读写超时
final int readTimeout = config.getReadTimeout();
if (readTimeout > 0) {
// 读写共用读取超时
builder.readTimeout(config.getReadTimeout(), TimeUnit.MILLISECONDS)
.writeTimeout(config.getReadTimeout(), TimeUnit.MILLISECONDS);
}
// SSL
final SSLInfo sslInfo = config.getSslInfo();
if (null != sslInfo) {
builder.sslSocketFactory(sslInfo.getSocketFactory(), sslInfo.getTrustManager());
}
// 设置代理
setProxy(builder, config);
// 默认关闭自动跳转
builder.setFollowRedirects$okhttp(false);

View File

@ -0,0 +1,26 @@
package org.dromara.hutool.http.client;
import org.dromara.hutool.http.HttpGlobalConfig;
import org.dromara.hutool.http.HttpUtil;
import org.dromara.hutool.http.client.engine.okhttp.OkHttpEngine;
import org.dromara.hutool.http.meta.HeaderName;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
public class IssueI8WU4MTest {
@Test
@Disabled
void timeoutTest() {
//设置超时单位毫秒这里1毫秒按道理100%超时
HttpGlobalConfig.setTimeout(1);
final String body = HttpUtil.createGet("https://restapi.amap.com/v3/ip?Key=ad054b1810672fb0ff6107cd71518837")
.header(HeaderName.CONTENT_TYPE, "application/x-www-form-urlencoded; charset=utf-8")
.header("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0")
.send(new OkHttpEngine())
.body().
getString();
System.out.println(body);
}
}