add method

This commit is contained in:
Looly 2021-11-06 01:17:08 +08:00
parent 470168e11b
commit e58c8c9d6c
3 changed files with 53 additions and 21 deletions

View File

@ -24,6 +24,7 @@
* 【core 】 CollUtil增加safeContains方法pr#1926@Github
* 【core 】 ActualTypeMapperPool增加getStrKeyMap方法pr#447@Gitee
* 【core 】 TreeUtil增加walk方法pr#1932@Gitee
* 【crypto 】 SmUtil增加sm3WithSaltpr#454@Gitee
### 🐞Bug修复
* 【core 】 修复UrlBuilder.addPath歧义问题issue#1912@Github

View File

@ -134,12 +134,13 @@ public class SmUtil {
}
/**
* SM3加密可以传入盐<br>
* SM3加密可以传入盐
*
* @param salt 加密盐
* @return {@link SM3}
* @since 5.7.16
*/
public static SM3 sm3(byte[] salt) {
public static SM3 sm3WithSalt(byte[] salt) {
return new SM3(salt);
}

View File

@ -147,6 +147,11 @@ public class HttpRequest extends HttpBase<HttpRequest> {
*/
private SSLSocketFactory ssf;
/**
* 请求前的处理器用于在请求前重新编辑请求类似于拦截器
*/
private Consumer<HttpRequest> consumer;
/**
* 构造URL编码默认使用UTF-8
*
@ -919,6 +924,16 @@ public class HttpRequest extends HttpBase<HttpRequest> {
return this;
}
/**
* 设置请求前的处理器用于在请求前重新编辑请求类似于拦截器
*
* @param consumer 请求前的处理器用于在请求前重新编辑请求类似于拦截器
* @since 5.7.16
*/
public void setConsumer(Consumer<HttpRequest> consumer) {
this.consumer = consumer;
}
/**
* 执行Reuqest请求
*
@ -949,22 +964,7 @@ public class HttpRequest extends HttpBase<HttpRequest> {
* @return this
*/
public HttpResponse execute(boolean isAsync) {
// 初始化URL
urlWithParamIfGet();
// 初始化 connection
initConnection();
// 发送请求
send();
// 手动实现重定向
HttpResponse httpResponse = sendRedirectIfPossible();
// 获取响应
if (null == httpResponse) {
httpResponse = new HttpResponse(this.httpConnection, this.charset, isAsync, isIgnoreResponseBody());
}
return httpResponse;
return doExecute(isAsync, this.consumer);
}
/**
@ -1054,6 +1054,35 @@ public class HttpRequest extends HttpBase<HttpRequest> {
// ---------------------------------------------------------------- Private method start
/**
* 执行Reuqest请求
*
* @param isAsync 是否异步
* @return this
*/
private HttpResponse doExecute(boolean isAsync, Consumer<HttpRequest> consumer) {
if (null != consumer) {
consumer.accept(this);
}
// 初始化URL
urlWithParamIfGet();
// 初始化 connection
initConnection();
// 发送请求
send();
// 手动实现重定向
HttpResponse httpResponse = sendRedirectIfPossible(isAsync);
// 获取响应
if (null == httpResponse) {
httpResponse = new HttpResponse(this.httpConnection, this.charset, isAsync, isIgnoreResponseBody());
}
return httpResponse;
}
/**
* 初始化网络连接
*/
@ -1108,9 +1137,10 @@ public class HttpRequest extends HttpBase<HttpRequest> {
/**
* 调用转发如果需要转发返回转发结果否则返回{@code null}
*
* @param isAsync 是否异步
* @return {@link HttpResponse}无转发返回 {@code null}
*/
private HttpResponse sendRedirectIfPossible() {
private HttpResponse sendRedirectIfPossible(boolean isAsync) {
if (this.maxRedirectCount < 1) {
// 不重定向
return null;
@ -1132,7 +1162,7 @@ public class HttpRequest extends HttpBase<HttpRequest> {
setUrl(httpConnection.header(Header.LOCATION));
if (redirectCount < this.maxRedirectCount) {
redirectCount++;
return execute();
return doExecute(isAsync, null);
}
}
}