diff --git a/CHANGELOG.md b/CHANGELOG.md index ef7fba7b8..fda23e977 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ * 【core 】 Sftp类增加toString方法(issue#I1F2T4@Gitee) * 【core 】 修改FileUtil.size逻辑,不存在的文件返回0 * 【extra 】 Sftp.ls遇到文件不存在返回空集合,而非抛异常(issue#844@Github) +* 【http 】 改进HttpRequest.toString()格式,添加url ### Bug修复 * 【db 】 修复PageResult.isLast计算问题 diff --git a/hutool-http/src/main/java/cn/hutool/http/HttpBase.java b/hutool-http/src/main/java/cn/hutool/http/HttpBase.java index 128690fca..083441d31 100644 --- a/hutool-http/src/main/java/cn/hutool/http/HttpBase.java +++ b/hutool-http/src/main/java/cn/hutool/http/HttpBase.java @@ -1,5 +1,11 @@ package cn.hutool.http; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.map.CaseInsensitiveMap; +import cn.hutool.core.util.CharsetUtil; +import cn.hutool.core.util.StrUtil; + import java.nio.charset.Charset; import java.util.ArrayList; import java.util.Collections; @@ -8,11 +14,6 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; -import cn.hutool.core.collection.CollectionUtil; -import cn.hutool.core.map.CaseInsensitiveMap; -import cn.hutool.core.util.CharsetUtil; -import cn.hutool.core.util.StrUtil; - /** * http基类 * @author Looly @@ -293,7 +294,9 @@ public abstract class HttpBase { StringBuilder sb = StrUtil.builder(); sb.append("Request Headers: ").append(StrUtil.CRLF); for (Entry> entry : this.headers.entrySet()) { - sb.append(" ").append(entry).append(StrUtil.CRLF); + sb.append(" ").append( + entry.getKey()).append(": ").append(CollUtil.join(entry.getValue(), ",")) + .append(StrUtil.CRLF); } sb.append("Request Body: ").append(StrUtil.CRLF); 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 462df202f..7eded0776 100644 --- a/hutool-http/src/main/java/cn/hutool/http/HttpRequest.java +++ b/hutool-http/src/main/java/cn/hutool/http/HttpRequest.java @@ -933,10 +933,8 @@ public class HttpRequest extends HttpBase { public HttpResponse execute(boolean isAsync) { // 初始化URL urlWithParamIfGet(); - // 初始化 connection initConnection(); - // 发送请求 send(); @@ -975,6 +973,15 @@ public class HttpRequest extends HttpBase { header(Header.AUTHORIZATION, content, true); return this; } + + @Override + public String toString() { + StringBuilder sb = StrUtil.builder(); + sb.append("Request Url: ").append(this.url).append(StrUtil.CRLF); + sb.append(super.toString()); + return sb.toString(); + } + // ---------------------------------------------------------------- Private method start /** @@ -1102,12 +1109,23 @@ public class HttpRequest extends HttpBase { } // Write的时候会优先使用body中的内容,write时自动关闭OutputStream - if (ArrayUtil.isNotEmpty(this.bodyBytes)) { - IoUtil.write(this.httpConnection.getOutputStream(), true, this.bodyBytes); - } else { - final String content = HttpUtil.toParams(this.form, this.charset); - IoUtil.write(this.httpConnection.getOutputStream(), this.charset, true, content); + byte[] content; + if(ArrayUtil.isNotEmpty(this.bodyBytes)){ + content = this.bodyBytes; + } else{ + content = StrUtil.bytes(getFormUrlEncoded(), this.charset); } + IoUtil.write(this.httpConnection.getOutputStream(), true, content); + } + + /** + * 获取编码后的表单数据,无表单数据返回"" + * + * @return 编码后的表单数据,无表单数据返回"" + * @since 5.3.2 + */ + private String getFormUrlEncoded() { + return HttpUtil.toParams(this.form, this.charset); } /** diff --git a/hutool-http/src/test/java/cn/hutool/http/test/HttpRequestTest.java b/hutool-http/src/test/java/cn/hutool/http/test/HttpRequestTest.java index 34c9f60c2..a725b169e 100644 --- a/hutool-http/src/test/java/cn/hutool/http/test/HttpRequestTest.java +++ b/hutool-http/src/test/java/cn/hutool/http/test/HttpRequestTest.java @@ -41,15 +41,11 @@ public class HttpRequestTest { @Test @Ignore - public void getWithParamsTest() { + public void toStringTest() { String url = "http://gc.ditu.aliyun.com/geocoding?ccc=你好"; - HttpRequest request = HttpRequest.get(url).setEncodeUrlParams(true).body("a=乌海"); - String body = request.execute().body(); - Console.log(body); - -// String body2 = HttpUtil.get(url); -// Console.log(body2); + HttpRequest request = HttpRequest.get(url).body("a=乌海"); + Console.log(request.toString()); } @Test