diff --git a/hutool-core/src/main/java/cn/hutool/core/text/CharSequenceUtil.java b/hutool-core/src/main/java/cn/hutool/core/text/CharSequenceUtil.java index 6c9b7f0a0..2f3e152bb 100644 --- a/hutool-core/src/main/java/cn/hutool/core/text/CharSequenceUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/text/CharSequenceUtil.java @@ -3608,7 +3608,7 @@ public class CharSequenceUtil { * replaceFun可以通过{@link Matcher}提取出匹配到的内容的不同部分,然后经过重新处理、组装变成新的内容放回原位。 * *
-	 *     replaceAll(this.content, "(\\d+)", parameters -> "-" + parameters.group(1) + "-")
+	 *     replace(this.content, "(\\d+)", parameters -> "-" + parameters.group(1) + "-")
 	 *     // 结果为:"ZZZaaabbbccc中文-1234-"
 	 * 
* diff --git a/hutool-http/src/main/java/cn/hutool/http/HttpRequest.java b/hutool-http/src/main/java/cn/hutool/http/HttpRequest.java index 2bcfcf289..ca76e651c 100644 --- a/hutool-http/src/main/java/cn/hutool/http/HttpRequest.java +++ b/hutool-http/src/main/java/cn/hutool/http/HttpRequest.java @@ -32,6 +32,7 @@ import java.net.URLStreamHandler; import java.util.Collection; import java.util.LinkedHashMap; import java.util.Map; +import java.util.function.Consumer; /** * http请求类
@@ -486,8 +487,8 @@ public class HttpRequest extends HttpBase { return this.form(name, (File) value); } - if(value instanceof Resource){ - return form(name, (Resource)value); + if (value instanceof Resource) { + return form(name, (Resource) value); } // 普通值 @@ -563,7 +564,7 @@ public class HttpRequest extends HttpBase { * @return this */ public HttpRequest form(String name, File... files) { - if(ArrayUtil.isEmpty(files)){ + if (ArrayUtil.isEmpty(files)) { return this; } if (1 == files.length) { @@ -656,9 +657,9 @@ public class HttpRequest extends HttpBase { */ public Map fileForm() { final Map result = MapUtil.newHashMap(); - this.form.forEach((key, value)->{ - if(value instanceof Resource){ - result.put(key, (Resource)value); + this.form.forEach((key, value) -> { + if (value instanceof Resource) { + result.put(key, (Resource) value); } }); return result; @@ -968,6 +969,19 @@ public class HttpRequest extends HttpBase { return httpResponse; } + /** + * 执行Request请求后,对响应内容后续处理
+ * 处理结束后关闭连接 + * + * @param consumer 响应内容处理函数 + * @since 5.7.8 + */ + public void then(Consumer consumer) { + try (HttpResponse response = execute(true)) { + consumer.accept(response); + } + } + /** * 简单验证,生成的头信息类似于: *
@@ -1168,9 +1182,9 @@ public class HttpRequest extends HttpBase {
 
 		// Write的时候会优先使用body中的内容,write时自动关闭OutputStream
 		byte[] content;
-		if(ArrayUtil.isNotEmpty(this.bodyBytes)){
+		if (ArrayUtil.isNotEmpty(this.bodyBytes)) {
 			content = this.bodyBytes;
-		} else{
+		} else {
 			content = StrUtil.bytes(getFormUrlEncoded(), this.charset);
 		}
 		IoUtil.write(this.httpConnection.getOutputStream(), true, content);
@@ -1228,11 +1242,12 @@ public class HttpRequest extends HttpBase {
 	 *     1. 存在资源对象(fileForm非空)
 	 *     2. 用户自定义头为multipart/form-data开头
 	 * 
+ * * @return 是否为multipart/form-data表单 * @since 5.3.5 */ - private boolean isMultipart(){ - if(this.isMultiPart){ + private boolean isMultipart() { + if (this.isMultiPart) { return true; } @@ -1244,15 +1259,15 @@ public class HttpRequest extends HttpBase { /** * 将参数加入到form中,如果form为空,新建之。 * - * @param name 表单属性名 + * @param name 表单属性名 * @param value 属性值 * @return this */ - private HttpRequest putToForm(String name, Object value){ - if(null == name || null == value){ + private HttpRequest putToForm(String name, Object value) { + if (null == name || null == value) { return this; } - if(null == this.form){ + if (null == this.form) { this.form = new LinkedHashMap<>(); } this.form.put(name, value); diff --git a/hutool-http/src/test/java/cn/hutool/http/HttpRequestTest.java b/hutool-http/src/test/java/cn/hutool/http/HttpRequestTest.java index 493b089b5..eef2daac3 100644 --- a/hutool-http/src/test/java/cn/hutool/http/HttpRequestTest.java +++ b/hutool-http/src/test/java/cn/hutool/http/HttpRequestTest.java @@ -5,7 +5,6 @@ import cn.hutool.core.date.TimeInterval; import cn.hutool.core.lang.Console; import cn.hutool.core.util.CharsetUtil; import cn.hutool.http.ssl.SSLSocketFactoryBuilder; -import cn.hutool.json.JSONUtil; import org.junit.Ignore; import org.junit.Test; @@ -29,6 +28,14 @@ public class HttpRequestTest { Console.log(body); } + @Test + @Ignore + public void getHttpsThenTest() { + HttpRequest + .get("https://hutool.cn") + .then(response -> Console.log(response.body())); + } + @Test @Ignore public void getCookiesTest() { @@ -126,14 +133,15 @@ public class HttpRequestTest { map.put("size", "2"); map.put("sizes", list); - String s = JSONUtil.toJsonStr(map); - HttpRequest request = HttpUtil.createGet("http://localhost:8888/get"); - Console.log(request.execute().body()); + HttpRequest + .get("http://localhost:8888/get") + .form(map) + .then(resp -> Console.log(resp.body())); } @Test @Ignore - public void getWithoutEncodeTest(){ + public void getWithoutEncodeTest() { String url = "https://img-cloud.voc.com.cn/140/2020/09/03/c3d41b93e0d32138574af8e8b50928b376ca5ba61599127028157.png?imageMogr2/auto-orient/thumbnail/500&pid=259848"; HttpRequest get = HttpUtil.createGet(url); Console.log(get.getUrl());