java HttpRequestBase如何打印请求及其所有数据 1 年,1 月 Questions & Answers 29827 我正在使用HttpRequestBase,我想在使用它之前将请求完全记录到日志文件中 默认的toString只返回请求行,我想打印所有的标题、参数、请求正文等 有没有办法做到这一点
# 1 楼答案 HttpRequestBase对象(HttpGet,HttpPost等)包含有关头、参数的信息,实现类包含主体,但它实际上没有序列化为String。当HttpClient实际发送请求时就会发生这种情况 您可以使用http组件logging configuration 或者你可以调用适当的方法,自己动手 HttpRequestBase base = new HttpGet("www.google.com"); Header[] headers = base.getAllHeaders(); // iterate and print 对于body,您需要强制转换到实现类,并获取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
# 1 楼答案
HttpRequestBase
对象(HttpGet
,HttpPost
等)包含有关头、参数的信息,实现类包含主体,但它实际上没有序列化为String
。当HttpClient
实际发送请求时就会发生这种情况您可以使用http组件logging configuration
或者你可以调用适当的方法,自己动手
对于body,您需要强制转换到实现类,并获取
HttpEntity
(如果有)并打印它(它的
InputStream
内容)注意:这可能会消耗实体完整示例
印刷品