web-dev-qa-db-ja.com

Apache HTTPClientの使用-送信される前に生のリクエスト文字列をどのように確認できますか?

デバッグの目的で、送信される生のリクエストを確認します。 HttpPost または HttpClient のAPIから直接HTTPモニターなしでこれを取得する方法はありますか?

「ほぼ」重複する質問がいくつか見つかりましたが、この特定の質問ではありません

19
Eran Medan

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");
30
Yser

これを試して:

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

method.setParameter(...., ....);

uRIを取得する

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

pOSTでパラメーターを取得する

method.getRequestEntity().writeRequest(System.out);
0
oizirbaf

ロギング構成でDEBUGモードを有効にしてみてください。log4jを使用している場合は、これをプロジェクトのlog4j.xmlファイルに追加できます

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

完全なリクエストヘッダー、パラメータ、本文などがログファイルに記録されます。

0
org.Apache.http.client.fluent.Request#viaProxy 

このメソッドは、リクエストがプロキシサーバーを通過できるようにするため、Fiddlerなどのローカルプロキシサーバーを起動できるため、このデバッグプロキシはhttpリクエストとレスポンスの詳細を表示できます。

0
chenxi