10

Apache Commons HTTP クライアントからを使用する場合DefaultHttpClient()、デバッグ目的でコンソール出力に完全なリクエストを表示することは可能ですか?

アプリケーションで問題が発生しています。アプリケーションをデバッグする最も簡単な方法は、DefaultHTTPClient.

4

5 に答える 5

15

次のようにすべてのヘッダーを取得できます。

Enumeration headerNames = request.getHeaderNames();
while(headerNames.hasMoreElements()) {
  String headerName = (String)headerNames.nextElement();
  out.println("" + headerName);
  out.println("" + request.getHeader(headerName));
}

詳細については、このチュートリアルを参照してください。

于 2012-09-11T07:32:16.460 に答える
9

はい、サンプルコードは次のとおりです。

    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());
    }
于 2015-08-05T18:58:39.497 に答える
8

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");
于 2012-09-12T05:38:04.840 に答える
0

リクエストを実行すると、どこかに HttpRequest オブジェクトが渡されます。方法がありますgetAllHeaders()

于 2012-09-11T07:27:46.027 に答える