Apache CommonsHTTPクライアントからDefaultHttpClient()
を使用する場合、デバッグの目的でコンソール出力に完全なリクエストを表示することは可能ですか?
アプリケーションに問題があり、それをデバッグする最も簡単な方法は、DefaultHTTPClient
によって送信されたすべてのデータを検査することだと思います。
StackOverflowの別の回答から。これは、ApacheHTTPクライアントのデバッグログを有効にすることで簡単に実行できます。
Java.util.logging.Logger.getLogger("org.Apache.http.wire").setLevel(Java.util.logging.Level.FINEST);
Java.util.logging.Logger.getLogger("org.Apache.http.headers").setLevel(Java.util.logging.Level.FINEST);
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.httpclient.wire", "debug");
System.setProperty("org.Apache.commons.logging.simplelog.log.org.Apache.http", "debug");
System.setProperty("org.Apache.commons.logging.simplelog.log.org.Apache.http.headers", "debug");
次のようなすべてのヘッダーを取得できます。
Enumeration headerNames = request.getHeaderNames();
while(headerNames.hasMoreElements()) {
String headerName = (String)headerNames.nextElement();
out.println("" + headerName);
out.println("" + request.getHeader(headerName));
}
詳細については、 このチュートリアル を参照してください。
はい、サンプルコードは次のとおりです。
import Java.util.Arrays;
import org.Apache.http.Header;
import org.Apache.http.HttpResponse;
import org.Apache.http.client.HttpClient;
import org.Apache.http.client.methods.HttpGet;
...
HttpResponse response;
...
HttpGet httpGet = new HttpGet(serviceURL);
response = httpclient.execute(httpGet);
...
// Print all headers
List<Header> httpHeaders = Arrays.asList(response.getAllHeaders());
for (Header header : httpHeaders) {
System.out.println("Headers.. name,value:"+header.getName() + "," + header.getValue());
}
リクエストを実行すると、どこかにHttpRequestオブジェクトが渡されます。メソッドgetAllHeaders()
があります