Apache commons httpclient 使用ApacheHttpClient-如何在原始请求字符串之前看到它';有人送他吗?

Apache commons httpclient 使用ApacheHttpClient-如何在原始请求字符串之前看到它';有人送他吗?,apache-commons-httpclient,Apache Commons Httpclient,出于调试目的,我希望看到将要发送的原始请求。有没有一种方法可以在没有HTTP监视器的情况下直接从或的API获取此信息 我发现了一些“几乎”重复的问题,但不是针对这个问题,您可以为ApacheHttpClient设置一些环境变量(针对4.3.2测试的示例) 还有一些变量需要调试: System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.http.impl.conn", "DEBUG"); System.setP

出于调试目的,我希望看到将要发送的原始请求。有没有一种方法可以在没有HTTP监视器的情况下直接从或的API获取此信息


我发现了一些“几乎”重复的问题,但不是针对这个问题,您可以为ApacheHttpClient设置一些环境变量(针对4.3.2测试的示例)

还有一些变量需要调试:

System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.http.impl.conn", "DEBUG");
System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.http.impl.client", "DEBUG");
System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.http.client", "DEBUG");
System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.http", "DEBUG");

您可以为ApacheHttpClient设置一些环境变量(针对4.3.2测试的示例)

还有一些变量需要调试:

System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.http.impl.conn", "DEBUG");
System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.http.impl.client", "DEBUG");
System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.http.client", "DEBUG");
System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.http", "DEBUG");
试试这个:

HttpClient client = new HttpClient();
PostMethod method = new PostMethod(url);

method.setParameter(...., ....);
检索URI的步骤

System.out.println("getUri: " + method.getURI());
在POST中检索参数的步骤

method.getRequestEntity().writeRequest(System.out);
试试这个:

HttpClient client = new HttpClient();
PostMethod method = new PostMethod(url);

method.setParameter(...., ....);
检索URI的步骤

System.out.println("getUri: " + method.getURI());
在POST中检索参数的步骤

method.getRequestEntity().writeRequest(System.out);
此方法可以使您的请求通过代理服务器,这样您就可以启动本地代理服务器,例如Fiddler,这样此调试代理就可以显示http请求和响应的详细信息


此方法可以使您的请求通过代理服务器,因此您可以启动本地代理服务器,例如Fiddler,以便此调试代理可以显示http请求和响应的详细信息。

尝试在日志记录配置中启用
调试
模式,如果您使用的是
log4j
,则可以将其添加到项目的
log4j.xml
文件中

<root>
    <priority value="DEBUG" />
    <appender-ref ref="FILE" />
</root>


您将在日志文件中记录完整的请求头、参数、正文等。

尝试在日志配置中启用
DEBUG
模式,如果您使用
log4j
可以将其添加到项目的
log4j.xml
文件中

<root>
    <priority value="DEBUG" />
    <appender-ref ref="FILE" />
</root>

您将在日志文件中记录完整的请求头、参数、正文等。

log4j2和/或slf4j解决方案 对于所有使用log4j2和/或slf4j的人来说,所有提到的解决方案都不起作用。 我在maven pom中添加了以下内容:

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jcl-over-slf4j</artifactId>
        <version>1.7.30</version>
    </dependency>

org.slf4j

log4j2和/或slf4j解决方案 对于所有使用log4j2和/或slf4j的人来说,所有提到的解决方案都不起作用。 我在maven pom中添加了以下内容:

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jcl-over-slf4j</artifactId>
        <version>1.7.30</version>
    </dependency>

org.slf4j

System.out不鼓励记录日志我喜欢这个示例,因为
method.getRequestEntity().WriterRequest
帮助我打印了请求。@MitchKent虽然我同意,但我不同意用不相关的日志代码来创建一个最小的示例。这对于演示之外的任何东西都是不切实际的。你能想象对每个HTTP调用都这样做吗?不鼓励System.out记录日志我喜欢这个例子,因为
method.getRequestEntity().WriterRequest
帮助我打印了请求。@MitchKent,尽管我同意,我不同意用不相关的日志代码来描述一个最小的例子。这对于演示之外的任何东西都是不切实际的。您能想象对每个HTTP调用都这样做吗?要了解更多取决于您的环境的日志记录选项,请参阅@Eran Medan,如果您想满足特定要求,还可以使用HttpRequestInterceptor。要了解更多取决于您的环境的日志记录选项,请参阅@Eran Medan,如果您想针对特定需求执行此操作,还可以使用HttpRequestInterceptor