diff --git a/hutool-http/src/main/java/org/dromara/hutool/http/client/HeaderOperation.java b/hutool-http/src/main/java/org/dromara/hutool/http/client/HeaderOperation.java index 08e97a919..93be10036 100644 --- a/hutool-http/src/main/java/org/dromara/hutool/http/client/HeaderOperation.java +++ b/hutool-http/src/main/java/org/dromara/hutool/http/client/HeaderOperation.java @@ -71,7 +71,12 @@ public interface HeaderOperation> { * @return header值 */ default String header(final String name) { - final Collection values = headers().get(name); + final Map> headers = headers(); + Collection values = headers.get(name); + if(null == values){ + // issue#I96U4T,根据RFC2616规范,header的name不区分大小写 + values = MapUtil.firstMatchValue(headers, entry-> StrUtil.equalsIgnoreCase(name, entry.getKey())); + } if (ArrayUtil.isNotEmpty(values)) { return CollUtil.getFirst(values); } diff --git a/hutool-http/src/main/java/org/dromara/hutool/http/client/engine/jdk/JdkHttpConnection.java b/hutool-http/src/main/java/org/dromara/hutool/http/client/engine/jdk/JdkHttpConnection.java index 484d8d2bb..f8beb41be 100644 --- a/hutool-http/src/main/java/org/dromara/hutool/http/client/engine/jdk/JdkHttpConnection.java +++ b/hutool-http/src/main/java/org/dromara/hutool/http/client/engine/jdk/JdkHttpConnection.java @@ -12,7 +12,9 @@ package org.dromara.hutool.http.client.engine.jdk; +import org.dromara.hutool.core.collection.CollUtil; import org.dromara.hutool.core.lang.Opt; +import org.dromara.hutool.core.map.MapUtil; import org.dromara.hutool.core.net.url.UrlUtil; import org.dromara.hutool.core.reflect.FieldUtil; import org.dromara.hutool.core.text.StrUtil; @@ -30,6 +32,7 @@ import java.net.HttpURLConnection; import java.net.ProtocolException; import java.net.Proxy; import java.net.URL; +import java.util.Collection; import java.util.List; import java.util.Map; @@ -288,7 +291,13 @@ public class JdkHttpConnection implements HeaderOperation, Cl */ @Override public String header(final String name) { - return this.conn.getHeaderField(name); + String headerField = this.conn.getHeaderField(name); + if(null == headerField){ + final Map> headers = headers(); + headerField = CollUtil.getFirst(MapUtil.firstMatchValue(headers, entry-> StrUtil.equalsIgnoreCase(name, entry.getKey()))); + } + + return headerField; } /**