Using Apache HTTPClient - how can one see the raw request string before it's being sent?

前端 未结 4 1475
庸人自扰
庸人自扰 2020-12-15 05:29

For debugging purposes, I\'d like to see the raw request that is going to be sent. Is there a way to get this without a HTTP monitor directly from the API of HttpPost or Htt

相关标签:
4条回答
  • 2020-12-15 05:59

    Try enabling DEBUG mode in your logging configurations, if you're using log4j you can add this to the log4j.xml file of your project

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

    You will have the full request headers, params, body, etc, logged in your logs files.

    0 讨论(0)
  • 2020-12-15 06:12
    org.apache.http.client.fluent.Request#viaProxy 
    

    This method can make your request pass through proxy server, so your can launch a local proxy server, for example Fiddler, so this debugging proxy can show the details of http request and response.

    0 讨论(0)
  • 2020-12-15 06:15

    Try this:

    HttpClient client = new HttpClient();
    PostMethod method = new PostMethod(url);
    
    method.setParameter(...., ....);
    

    to retrieve the URI

    System.out.println("getUri: " + method.getURI());
    

    to retrieve the parameters in POST

    method.getRequestEntity().writeRequest(System.out);
    
    0 讨论(0)
  • 2020-12-15 06:17

    You can set some environment variables for Apache HttpClient (example tested for 4.3.2).

    System.setProperty("org.apache.commons.logging.Log","org.apache.commons.logging.impl.SimpleLog");
    System.setProperty("org.apache.commons.logging.simplelog.showdatetime", "true");
    System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.http.wire", "DEBUG");
    

    There are also some more variables for debugging:

    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");
    
    0 讨论(0)
提交回复
热议问题