gpt4 book ai didi

java - HttpRequestBase - 如何打印请求及其所有数据

转载 作者:太空狗 更新时间:2023-10-29 22:46:17 27 4
gpt4 key购买 nike

我正在使用 HttpRequestBase,我想在使用之前将请求完整记录到日志文件中。

默认的 toString 只返回请求行,我想打印所有的头、参数、请求正文等...

有办法吗?

最佳答案

HttpRequestBase对象(HttpGetHttpPost等)包含了headers、parameters等信息,实现类包含了body ,但实际上并未序列化为 String。当 HttpClient 实际发送请求时会发生这种情况。

您可以使用 http 组件 logging configuration .

或者您可以调用适当的方法并自己完成。

HttpRequestBase base = new HttpGet("www.google.com");
Header[] headers = base.getAllHeaders();
// iterate and print

对于正文,您需要转换为您的实现类并获取 HttpEntity(如果有的话)。

HttpEntity entity = ((HttpPost)base).getEntity(); // example

并打印它(它的 InputStream 内容)。 注意:这可能会消耗实体。

完整示例

HttpPost post = new HttpPost("www.google.com");
post.setHeader(new BasicHeader("User-Agent", "random client"));
HttpEntity entity = new StringEntity("yellaworld");
post.setEntity(entity);
Header[] headers = post.getAllHeaders();
String content = EntityUtils.toString(entity);

System.out.println(post.toString());
for (Header header : headers) {
System.out.println(header.getName() + ": " + header.getValue());
}
System.out.println();
System.out.println(content);

打印

POST www.google.com HTTP/1.1
User-Agent: random client

yellaworld

关于java - HttpRequestBase - 如何打印请求及其所有数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18744226/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com