From 2ecb2478617e984adb19c796a622843b1c35c791 Mon Sep 17 00:00:00 2001 From: Toint <599818663@qq.com> Date: Sun, 28 Jul 2024 04:13:52 +0800 Subject: [PATCH 1/2] =?UTF-8?q?Request=E6=B7=BB=E5=8A=A0bodyStr=E3=80=81bo?= =?UTF-8?q?dyBytes=E3=80=81bodyStream=E3=80=81toString=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/hutool/http/client/Request.java | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/hutool-http/src/main/java/org/dromara/hutool/http/client/Request.java b/hutool-http/src/main/java/org/dromara/hutool/http/client/Request.java index 6ecfc95d9..7e279d81e 100644 --- a/hutool-http/src/main/java/org/dromara/hutool/http/client/Request.java +++ b/hutool-http/src/main/java/org/dromara/hutool/http/client/Request.java @@ -12,7 +12,9 @@ package org.dromara.hutool.http.client; +import org.dromara.hutool.core.collection.CollUtil; import org.dromara.hutool.core.collection.ListUtil; +import org.dromara.hutool.core.io.IoUtil; import org.dromara.hutool.core.io.resource.Resource; import org.dromara.hutool.core.lang.Assert; import org.dromara.hutool.core.map.MapUtil; @@ -278,6 +280,44 @@ public class Request implements HeaderOperation { return this.body; } + /** + * 获取请求体字符串 + * + * @return 请求体字符串 + */ + public String bodyStr() { + InputStream bodyStream = this.bodyStream(); + if (bodyStream == null) { + return null; + } + return IoUtil.read(bodyStream, this.charset); + } + + /** + * 获取请求体字节码 + * + * @return 请求体字节码 + */ + public byte[] bodyBytes() { + InputStream bodyStream = this.bodyStream(); + if (bodyStream == null) { + return null; + } + return IoUtil.readBytes(bodyStream); + } + + /** + * 获取请求体资源流 + * + * @return 请求体资源流 + */ + public InputStream bodyStream() { + if (this.body == null) { + return null; + } + return this.body.getStream(); + } + /** * 获取处理过的请求体,即如果是非REST的GET请求,始终返回{@code null} * @@ -415,4 +455,25 @@ public class Request implements HeaderOperation { return this.url(); } + + @Override + public String toString() { + final StringBuilder sb = StrUtil.builder(); + sb.append("Request Url: ").append(this.url).append(StrUtil.CRLF); + + // header + sb.append("Request Headers: ").append(StrUtil.CRLF); + for (Map.Entry> entry : this.headers.entrySet()) { + sb.append(" ") + .append(entry.getKey()) + .append(": ") + .append(CollUtil.join(entry.getValue(), ",")) + .append(StrUtil.CRLF); + } + + // body + sb.append("Request Body: ").append(StrUtil.CRLF); + sb.append(" ").append(this.bodyStr()).append(StrUtil.CRLF); + return sb.toString(); + } } From d1037cd415b2b519d4b102f8967395fa3f1b14d1 Mon Sep 17 00:00:00 2001 From: Toint <599818663@qq.com> Date: Sun, 28 Jul 2024 05:10:22 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=B7=BB=E5=8A=A0HttpUtil=E5=AF=B9Request?= =?UTF-8?q?=E7=9A=84toString=E9=9D=99=E6=80=81=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/dromara/hutool/http/HttpUtil.java | 26 +++++++++++++++++++ .../dromara/hutool/http/client/Request.java | 20 ++------------ 2 files changed, 28 insertions(+), 18 deletions(-) diff --git a/hutool-http/src/main/java/org/dromara/hutool/http/HttpUtil.java b/hutool-http/src/main/java/org/dromara/hutool/http/HttpUtil.java index 40331d121..307f29e5d 100644 --- a/hutool-http/src/main/java/org/dromara/hutool/http/HttpUtil.java +++ b/hutool-http/src/main/java/org/dromara/hutool/http/HttpUtil.java @@ -315,6 +315,32 @@ public class HttpUtil { return sb.toString(); } + /** + * 打印 {@link Request} 为可读形式 + * + * @param request {@link Request} + * @return 字符串 + */ + public static String toString(final Request request) { + final StringBuilder sb = StrUtil.builder(); + sb.append("Request Url: ").append(request.url()).append(StrUtil.CRLF); + + // header + sb.append("Request Headers: ").append(StrUtil.CRLF); + for (Map.Entry> entry : request.headers().entrySet()) { + sb.append(" ") + .append(entry.getKey()) + .append(": ") + .append(CollUtil.join(entry.getValue(), ",")) + .append(StrUtil.CRLF); + } + + // body + sb.append("Request Body: ").append(StrUtil.CRLF); + sb.append(" ").append(request.bodyStr()).append(StrUtil.CRLF); + return sb.toString(); + } + /** * 获取指定的Header值,如果不存在返回{@code null}
* 根据RFC2616规范,header的name不区分大小写,因此首先get值,不存在则遍历匹配不区分大小写的key。 diff --git a/hutool-http/src/main/java/org/dromara/hutool/http/client/Request.java b/hutool-http/src/main/java/org/dromara/hutool/http/client/Request.java index 7e279d81e..f377f6f93 100644 --- a/hutool-http/src/main/java/org/dromara/hutool/http/client/Request.java +++ b/hutool-http/src/main/java/org/dromara/hutool/http/client/Request.java @@ -12,7 +12,6 @@ package org.dromara.hutool.http.client; -import org.dromara.hutool.core.collection.CollUtil; import org.dromara.hutool.core.collection.ListUtil; import org.dromara.hutool.core.io.IoUtil; import org.dromara.hutool.core.io.resource.Resource; @@ -25,6 +24,7 @@ import org.dromara.hutool.core.text.StrUtil; import org.dromara.hutool.core.util.CharsetUtil; import org.dromara.hutool.http.GlobalHeaders; import org.dromara.hutool.http.HttpGlobalConfig; +import org.dromara.hutool.http.HttpUtil; import org.dromara.hutool.http.client.body.*; import org.dromara.hutool.http.client.engine.ClientEngine; import org.dromara.hutool.http.client.engine.ClientEngineFactory; @@ -458,22 +458,6 @@ public class Request implements HeaderOperation { @Override public String toString() { - final StringBuilder sb = StrUtil.builder(); - sb.append("Request Url: ").append(this.url).append(StrUtil.CRLF); - - // header - sb.append("Request Headers: ").append(StrUtil.CRLF); - for (Map.Entry> entry : this.headers.entrySet()) { - sb.append(" ") - .append(entry.getKey()) - .append(": ") - .append(CollUtil.join(entry.getValue(), ",")) - .append(StrUtil.CRLF); - } - - // body - sb.append("Request Body: ").append(StrUtil.CRLF); - sb.append(" ").append(this.bodyStr()).append(StrUtil.CRLF); - return sb.toString(); + return HttpUtil.toString(this); } }