爲了調試的目的,我希望看到要發送的原始請求。有沒有辦法讓這個沒有HTTP監視器直接從HttpPost
或HttpClient
的API?使用Apache HTTPClient - 如何在發送之前看到原始請求字符串?
我發現了一些「幾乎」重複的問題,但不適合這個特殊的
爲了調試的目的,我希望看到要發送的原始請求。有沒有辦法讓這個沒有HTTP監視器直接從HttpPost
或HttpClient
的API?使用Apache HTTPClient - 如何在發送之前看到原始請求字符串?
我發現了一些「幾乎」重複的問題,但不適合這個特殊的
您可以設置爲Apache的HttpClient(例如用於測試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");
也有用於調試的一些變量:
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);
System.out不會被鼓勵進行日誌記錄 –
我喜歡這個例子,因爲'method.getRequestEntity()。writeRequest'幫助我打印出請求。 – GameScripting
org.apache.http.client.fluent.Request#viaProxy
這種方法可以讓你的要求通過代理服務器,那麼你可以啓動一個本地代理服務器,例如提琴手,所以這個調試代理可以顯示HTTP請求和響應的細節。
對於更多日誌選項取決於您的環境,請參閱https://hc.apache.org/httpcomponents-client-ga/logging.html – vinksharma
@Eran Medan如果您想爲特定目的執行此操作,還有HttpRequestInterceptor請求 –