mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-05-09 23:51:34 +08:00
add method
This commit is contained in:
parent
d3f946dd33
commit
5717fb52c5
@ -3,10 +3,11 @@
|
|||||||
|
|
||||||
-------------------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
# 5.7.13 (2021-09-11)
|
# 5.7.13 (2021-09-13)
|
||||||
|
|
||||||
### 🐣新特性
|
### 🐣新特性
|
||||||
* 【core 】 CsvReadConfig增加trimField选项(issue#I49M0C@Gitee)
|
* 【core 】 CsvReadConfig增加trimField选项(issue#I49M0C@Gitee)
|
||||||
|
* 【http 】 HttpBase增加clearHeaders方法(issue#I49P23@Gitee)
|
||||||
*
|
*
|
||||||
### 🐞Bug修复
|
### 🐞Bug修复
|
||||||
* 【core 】 修复FuncKey函数无效问题
|
* 【core 】 修复FuncKey函数无效问题
|
||||||
|
@ -16,13 +16,14 @@ import java.util.Map.Entry;
|
|||||||
* 所有Http请求将共用此全局头部信息,除非在{@link HttpRequest}中自定义头部信息覆盖之
|
* 所有Http请求将共用此全局头部信息,除非在{@link HttpRequest}中自定义头部信息覆盖之
|
||||||
*
|
*
|
||||||
* @author looly
|
* @author looly
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
public enum GlobalHeaders {
|
public enum GlobalHeaders {
|
||||||
INSTANCE;
|
INSTANCE;
|
||||||
|
|
||||||
/** 存储头信息 */
|
/**
|
||||||
protected Map<String, List<String>> headers = new HashMap<>();
|
* 存储头信息
|
||||||
|
*/
|
||||||
|
Map<String, List<String>> headers = new HashMap<>();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 构造
|
* 构造
|
||||||
@ -56,6 +57,7 @@ public enum GlobalHeaders {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ---------------------------------------------------------------- Headers start
|
// ---------------------------------------------------------------- Headers start
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据name获取头信息
|
* 根据name获取头信息
|
||||||
*
|
*
|
||||||
@ -102,8 +104,8 @@ public enum GlobalHeaders {
|
|||||||
* 设置一个header<br>
|
* 设置一个header<br>
|
||||||
* 如果覆盖模式,则替换之前的值,否则加入到值列表中
|
* 如果覆盖模式,则替换之前的值,否则加入到值列表中
|
||||||
*
|
*
|
||||||
* @param name Header名
|
* @param name Header名
|
||||||
* @param value Header值
|
* @param value Header值
|
||||||
* @param isOverride 是否覆盖已有值
|
* @param isOverride 是否覆盖已有值
|
||||||
* @return this
|
* @return this
|
||||||
*/
|
*/
|
||||||
@ -125,8 +127,8 @@ public enum GlobalHeaders {
|
|||||||
* 设置一个header<br>
|
* 设置一个header<br>
|
||||||
* 如果覆盖模式,则替换之前的值,否则加入到值列表中
|
* 如果覆盖模式,则替换之前的值,否则加入到值列表中
|
||||||
*
|
*
|
||||||
* @param name Header名
|
* @param name Header名
|
||||||
* @param value Header值
|
* @param value Header值
|
||||||
* @param isOverride 是否覆盖已有值
|
* @param isOverride 是否覆盖已有值
|
||||||
* @return this
|
* @return this
|
||||||
*/
|
*/
|
||||||
@ -138,7 +140,7 @@ public enum GlobalHeaders {
|
|||||||
* 设置一个header<br>
|
* 设置一个header<br>
|
||||||
* 覆盖模式,则替换之前的值
|
* 覆盖模式,则替换之前的值
|
||||||
*
|
*
|
||||||
* @param name Header名
|
* @param name Header名
|
||||||
* @param value Header值
|
* @param value Header值
|
||||||
* @return this
|
* @return this
|
||||||
*/
|
*/
|
||||||
@ -150,7 +152,7 @@ public enum GlobalHeaders {
|
|||||||
* 设置一个header<br>
|
* 设置一个header<br>
|
||||||
* 覆盖模式,则替换之前的值
|
* 覆盖模式,则替换之前的值
|
||||||
*
|
*
|
||||||
* @param name Header名
|
* @param name Header名
|
||||||
* @param value Header值
|
* @param value Header值
|
||||||
* @return this
|
* @return this
|
||||||
*/
|
*/
|
||||||
@ -211,6 +213,17 @@ public enum GlobalHeaders {
|
|||||||
public Map<String, List<String>> headers() {
|
public Map<String, List<String>> headers() {
|
||||||
return Collections.unmodifiableMap(headers);
|
return Collections.unmodifiableMap(headers);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 清除所有头信息,包括全局头信息
|
||||||
|
*
|
||||||
|
* @return this
|
||||||
|
* @since 5.7.13
|
||||||
|
*/
|
||||||
|
public GlobalHeaders clearHeaders() {
|
||||||
|
this.headers.clear();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
// ---------------------------------------------------------------- Headers end
|
// ---------------------------------------------------------------- Headers end
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -17,27 +17,41 @@ import java.util.Map.Entry;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* http基类
|
* http基类
|
||||||
* @author Looly
|
*
|
||||||
* @param <T> 子类类型,方便链式编程
|
* @param <T> 子类类型,方便链式编程
|
||||||
|
* @author Looly
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public abstract class HttpBase<T> {
|
public abstract class HttpBase<T> {
|
||||||
|
|
||||||
/**HTTP/1.0*/
|
/**
|
||||||
|
* HTTP/1.0
|
||||||
|
*/
|
||||||
public static final String HTTP_1_0 = "HTTP/1.0";
|
public static final String HTTP_1_0 = "HTTP/1.0";
|
||||||
/**HTTP/1.1*/
|
/**
|
||||||
|
* HTTP/1.1
|
||||||
|
*/
|
||||||
public static final String HTTP_1_1 = "HTTP/1.1";
|
public static final String HTTP_1_1 = "HTTP/1.1";
|
||||||
|
|
||||||
/**存储头信息*/
|
/**
|
||||||
|
* 存储头信息
|
||||||
|
*/
|
||||||
protected Map<String, List<String>> headers = new HashMap<>();
|
protected Map<String, List<String>> headers = new HashMap<>();
|
||||||
/**编码*/
|
/**
|
||||||
|
* 编码
|
||||||
|
*/
|
||||||
protected Charset charset = CharsetUtil.CHARSET_UTF_8;
|
protected Charset charset = CharsetUtil.CHARSET_UTF_8;
|
||||||
/**http版本*/
|
/**
|
||||||
|
* http版本
|
||||||
|
*/
|
||||||
protected String httpVersion = HTTP_1_1;
|
protected String httpVersion = HTTP_1_1;
|
||||||
/**存储主体*/
|
/**
|
||||||
|
* 存储主体
|
||||||
|
*/
|
||||||
protected byte[] bodyBytes;
|
protected byte[] bodyBytes;
|
||||||
|
|
||||||
// ---------------------------------------------------------------- Headers start
|
// ---------------------------------------------------------------- Headers start
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据name获取头信息<br>
|
* 根据name获取头信息<br>
|
||||||
* 根据RFC2616规范,header的name不区分大小写
|
* 根据RFC2616规范,header的name不区分大小写
|
||||||
@ -47,7 +61,7 @@ public abstract class HttpBase<T> {
|
|||||||
*/
|
*/
|
||||||
public String header(String name) {
|
public String header(String name) {
|
||||||
final List<String> values = headerList(name);
|
final List<String> values = headerList(name);
|
||||||
if(CollectionUtil.isEmpty(values)) {
|
if (CollectionUtil.isEmpty(values)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return values.get(0);
|
return values.get(0);
|
||||||
@ -55,26 +69,28 @@ public abstract class HttpBase<T> {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据name获取头信息列表
|
* 根据name获取头信息列表
|
||||||
|
*
|
||||||
* @param name Header名
|
* @param name Header名
|
||||||
* @return Header值
|
* @return Header值
|
||||||
* @since 3.1.1
|
* @since 3.1.1
|
||||||
*/
|
*/
|
||||||
public List<String> headerList(String name) {
|
public List<String> headerList(String name) {
|
||||||
if(StrUtil.isBlank(name)) {
|
if (StrUtil.isBlank(name)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
final CaseInsensitiveMap<String,List<String>> headersIgnoreCase = new CaseInsensitiveMap<>(this.headers);
|
final CaseInsensitiveMap<String, List<String>> headersIgnoreCase = new CaseInsensitiveMap<>(this.headers);
|
||||||
return headersIgnoreCase.get(name.trim());
|
return headersIgnoreCase.get(name.trim());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据name获取头信息
|
* 根据name获取头信息
|
||||||
|
*
|
||||||
* @param name Header名
|
* @param name Header名
|
||||||
* @return Header值
|
* @return Header值
|
||||||
*/
|
*/
|
||||||
public String header(Header name) {
|
public String header(Header name) {
|
||||||
if(null == name) {
|
if (null == name) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return header(name.toString());
|
return header(name.toString());
|
||||||
@ -83,19 +99,20 @@ public abstract class HttpBase<T> {
|
|||||||
/**
|
/**
|
||||||
* 设置一个header<br>
|
* 设置一个header<br>
|
||||||
* 如果覆盖模式,则替换之前的值,否则加入到值列表中
|
* 如果覆盖模式,则替换之前的值,否则加入到值列表中
|
||||||
* @param name Header名
|
*
|
||||||
* @param value Header值
|
* @param name Header名
|
||||||
|
* @param value Header值
|
||||||
* @param isOverride 是否覆盖已有值
|
* @param isOverride 是否覆盖已有值
|
||||||
* @return T 本身
|
* @return T 本身
|
||||||
*/
|
*/
|
||||||
public T header(String name, String value, boolean isOverride) {
|
public T header(String name, String value, boolean isOverride) {
|
||||||
if(null != name && null != value){
|
if (null != name && null != value) {
|
||||||
final List<String> values = headers.get(name.trim());
|
final List<String> values = headers.get(name.trim());
|
||||||
if(isOverride || CollectionUtil.isEmpty(values)) {
|
if (isOverride || CollectionUtil.isEmpty(values)) {
|
||||||
final ArrayList<String> valueList = new ArrayList<>();
|
final ArrayList<String> valueList = new ArrayList<>();
|
||||||
valueList.add(value);
|
valueList.add(value);
|
||||||
headers.put(name.trim(), valueList);
|
headers.put(name.trim(), valueList);
|
||||||
}else {
|
} else {
|
||||||
values.add(value.trim());
|
values.add(value.trim());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -105,8 +122,9 @@ public abstract class HttpBase<T> {
|
|||||||
/**
|
/**
|
||||||
* 设置一个header<br>
|
* 设置一个header<br>
|
||||||
* 如果覆盖模式,则替换之前的值,否则加入到值列表中
|
* 如果覆盖模式,则替换之前的值,否则加入到值列表中
|
||||||
* @param name Header名
|
*
|
||||||
* @param value Header值
|
* @param name Header名
|
||||||
|
* @param value Header值
|
||||||
* @param isOverride 是否覆盖已有值
|
* @param isOverride 是否覆盖已有值
|
||||||
* @return T 本身
|
* @return T 本身
|
||||||
*/
|
*/
|
||||||
@ -117,7 +135,8 @@ public abstract class HttpBase<T> {
|
|||||||
/**
|
/**
|
||||||
* 设置一个header<br>
|
* 设置一个header<br>
|
||||||
* 覆盖模式,则替换之前的值
|
* 覆盖模式,则替换之前的值
|
||||||
* @param name Header名
|
*
|
||||||
|
* @param name Header名
|
||||||
* @param value Header值
|
* @param value Header值
|
||||||
* @return T 本身
|
* @return T 本身
|
||||||
*/
|
*/
|
||||||
@ -128,7 +147,8 @@ public abstract class HttpBase<T> {
|
|||||||
/**
|
/**
|
||||||
* 设置一个header<br>
|
* 设置一个header<br>
|
||||||
* 覆盖模式,则替换之前的值
|
* 覆盖模式,则替换之前的值
|
||||||
* @param name Header名
|
*
|
||||||
|
* @param name Header名
|
||||||
* @param value Header值
|
* @param value Header值
|
||||||
* @return T 本身
|
* @return T 本身
|
||||||
*/
|
*/
|
||||||
@ -139,20 +159,20 @@ public abstract class HttpBase<T> {
|
|||||||
/**
|
/**
|
||||||
* 设置请求头
|
* 设置请求头
|
||||||
*
|
*
|
||||||
* @param headers 请求头
|
* @param headers 请求头
|
||||||
* @param isOverride 是否覆盖已有头信息
|
* @param isOverride 是否覆盖已有头信息
|
||||||
* @return this
|
* @return this
|
||||||
* @since 4.6.3
|
* @since 4.6.3
|
||||||
*/
|
*/
|
||||||
public T headerMap(Map<String, String> headers, boolean isOverride) {
|
public T headerMap(Map<String, String> headers, boolean isOverride) {
|
||||||
if(MapUtil.isEmpty(headers)) {
|
if (MapUtil.isEmpty(headers)) {
|
||||||
return (T)this;
|
return (T) this;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (Entry<String, String> entry : headers.entrySet()) {
|
for (Entry<String, String> entry : headers.entrySet()) {
|
||||||
this.header(entry.getKey(), StrUtil.nullToEmpty(entry.getValue()), isOverride);
|
this.header(entry.getKey(), StrUtil.nullToEmpty(entry.getValue()), isOverride);
|
||||||
}
|
}
|
||||||
return (T)this;
|
return (T) this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -169,14 +189,14 @@ public abstract class HttpBase<T> {
|
|||||||
/**
|
/**
|
||||||
* 设置请求头
|
* 设置请求头
|
||||||
*
|
*
|
||||||
* @param headers 请求头
|
* @param headers 请求头
|
||||||
* @param isOverride 是否覆盖已有头信息
|
* @param isOverride 是否覆盖已有头信息
|
||||||
* @return this
|
* @return this
|
||||||
* @since 4.0.8
|
* @since 4.0.8
|
||||||
*/
|
*/
|
||||||
public T header(Map<String, List<String>> headers, boolean isOverride) {
|
public T header(Map<String, List<String>> headers, boolean isOverride) {
|
||||||
if(MapUtil.isEmpty(headers)) {
|
if (MapUtil.isEmpty(headers)) {
|
||||||
return (T)this;
|
return (T) this;
|
||||||
}
|
}
|
||||||
|
|
||||||
String name;
|
String name;
|
||||||
@ -186,7 +206,7 @@ public abstract class HttpBase<T> {
|
|||||||
this.header(name, StrUtil.nullToEmpty(value), isOverride);
|
this.header(name, StrUtil.nullToEmpty(value), isOverride);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return (T)this;
|
return (T) this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -198,30 +218,32 @@ public abstract class HttpBase<T> {
|
|||||||
* @since 4.0.3
|
* @since 4.0.3
|
||||||
*/
|
*/
|
||||||
public T addHeaders(Map<String, String> headers) {
|
public T addHeaders(Map<String, String> headers) {
|
||||||
if(MapUtil.isEmpty(headers)) {
|
if (MapUtil.isEmpty(headers)) {
|
||||||
return (T)this;
|
return (T) this;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (Entry<String,String> entry : headers.entrySet()) {
|
for (Entry<String, String> entry : headers.entrySet()) {
|
||||||
this.header(entry.getKey(), StrUtil.nullToEmpty(entry.getValue()), false);
|
this.header(entry.getKey(), StrUtil.nullToEmpty(entry.getValue()), false);
|
||||||
}
|
}
|
||||||
return (T)this;
|
return (T) this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 移除一个头信息
|
* 移除一个头信息
|
||||||
|
*
|
||||||
* @param name Header名
|
* @param name Header名
|
||||||
* @return this
|
* @return this
|
||||||
*/
|
*/
|
||||||
public T removeHeader(String name) {
|
public T removeHeader(String name) {
|
||||||
if(name != null) {
|
if (name != null) {
|
||||||
headers.remove(name.trim());
|
headers.remove(name.trim());
|
||||||
}
|
}
|
||||||
return (T)this;
|
return (T) this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 移除一个头信息
|
* 移除一个头信息
|
||||||
|
*
|
||||||
* @param name Header名
|
* @param name Header名
|
||||||
* @return this
|
* @return this
|
||||||
*/
|
*/
|
||||||
@ -231,15 +253,28 @@ public abstract class HttpBase<T> {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取headers
|
* 获取headers
|
||||||
|
*
|
||||||
* @return Headers Map
|
* @return Headers Map
|
||||||
*/
|
*/
|
||||||
public Map<String, List<String>> headers() {
|
public Map<String, List<String>> headers() {
|
||||||
return Collections.unmodifiableMap(headers);
|
return Collections.unmodifiableMap(headers);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 清除所有头信息,包括全局头信息
|
||||||
|
*
|
||||||
|
* @return this
|
||||||
|
* @since 5.7.13
|
||||||
|
*/
|
||||||
|
public T clearHeaders() {
|
||||||
|
this.headers.clear();
|
||||||
|
return (T) this;
|
||||||
|
}
|
||||||
// ---------------------------------------------------------------- Headers end
|
// ---------------------------------------------------------------- Headers end
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 返回http版本
|
* 返回http版本
|
||||||
|
*
|
||||||
* @return String
|
* @return String
|
||||||
*/
|
*/
|
||||||
public String httpVersion() {
|
public String httpVersion() {
|
||||||
@ -259,6 +294,7 @@ public abstract class HttpBase<T> {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 返回字符集
|
* 返回字符集
|
||||||
|
*
|
||||||
* @return 字符集
|
* @return 字符集
|
||||||
*/
|
*/
|
||||||
public String charset() {
|
public String charset() {
|
||||||
@ -267,12 +303,13 @@ public abstract class HttpBase<T> {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 设置字符集
|
* 设置字符集
|
||||||
|
*
|
||||||
* @param charset 字符集
|
* @param charset 字符集
|
||||||
* @return T 自己
|
* @return T 自己
|
||||||
* @see CharsetUtil
|
* @see CharsetUtil
|
||||||
*/
|
*/
|
||||||
public T charset(String charset) {
|
public T charset(String charset) {
|
||||||
if(StrUtil.isNotBlank(charset)){
|
if (StrUtil.isNotBlank(charset)) {
|
||||||
charset(Charset.forName(charset));
|
charset(Charset.forName(charset));
|
||||||
}
|
}
|
||||||
return (T) this;
|
return (T) this;
|
||||||
@ -280,12 +317,13 @@ public abstract class HttpBase<T> {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 设置字符集
|
* 设置字符集
|
||||||
|
*
|
||||||
* @param charset 字符集
|
* @param charset 字符集
|
||||||
* @return T 自己
|
* @return T 自己
|
||||||
* @see CharsetUtil
|
* @see CharsetUtil
|
||||||
*/
|
*/
|
||||||
public T charset(Charset charset) {
|
public T charset(Charset charset) {
|
||||||
if(null != charset){
|
if (null != charset) {
|
||||||
this.charset = charset;
|
this.charset = charset;
|
||||||
}
|
}
|
||||||
return (T) this;
|
return (T) this;
|
||||||
@ -297,7 +335,7 @@ public abstract class HttpBase<T> {
|
|||||||
sb.append("Request Headers: ").append(StrUtil.CRLF);
|
sb.append("Request Headers: ").append(StrUtil.CRLF);
|
||||||
for (Entry<String, List<String>> entry : this.headers.entrySet()) {
|
for (Entry<String, List<String>> entry : this.headers.entrySet()) {
|
||||||
sb.append(" ").append(
|
sb.append(" ").append(
|
||||||
entry.getKey()).append(": ").append(CollUtil.join(entry.getValue(), ","))
|
entry.getKey()).append(": ").append(CollUtil.join(entry.getValue(), ","))
|
||||||
.append(StrUtil.CRLF);
|
.append(StrUtil.CRLF);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user