2014-10-03 3 views
0

나는 org.apache.http 활용하는 자바 응용 프로그램을 디버깅하고 소비하지 않고 인쇄 * API :의 HTTP 상호 작용

HttpResponse response = m_httpClient.execute(head,new BasicHttpContext()); 

하나의 예입니다, 내 프로젝트는 같은 라인의 많은입니다 정말 두 번하지만 "소비 된 내용 IllegalStateException이"내가 요청을 수행하고

을 피하기 위해 해결 방법으로
Log.i(TAG, "---> Request <-----"); 
     String str = ""; 
     for (Header header : post.getAllHeaders()) 
     { 
      str += header.getName() + " : " + header.getValue() + "\n"; 

     } 
     Log.i(TAG, str); 
     Log.i(TAG, "---> Response <-----"); 
     HttpResponse response = client.execute(post); 
     Log.i(TAG, EntityUtils.toString(response.getEntity())); 

     response = client.execute(post); 

: 하나, 나는 삽입 등의 내용과 헤더를 인쇄해야 인쇄 로그를 싶습니다 아니요, 그런 것을 해결책이 있습니까 이것을 피하기 위해?

+0

EntityUtils.toString은 HTTP 응답을 간접적으로 사용하여 String 객체를 작성하는 InputStream입니다. 가장 짧은 해결책은 String String을 재사용하는 것입니다. –

답변

1

어떤 http 클라이언트를 사용하십니까?

각 HttpClient를 풍미는 "와이어와 헤더 로그에 차례"에 대한 googleable 기술을 당신이 org.apache 클라이언트를 사용한다면 .... 예를 들어

, 여기 당신이 할 무엇인가가 있어야합니다 turn on the logs 당신은 와이어 & 헤더 로그로 ..

를 요구하고는 로그 캣, 당신은 너무 빨리 조사 후

0

here를 보는 것을 포함이 꽤 유행 예외처럼이 보이는 켜져.

어쨌든 한 번만 응답 문자열을 요청할 수 있습니까? 메서드 변수에 저장하고 응답 문자열을 기록한 다음 응답 문자열 만 반환합니다 (전체 HttpResponse 객체 대신).

또는 코드가 실제로 HttpResponse의 다른 메소드에서 실제로 작동하는 코드 체인을 넘었습니까?

필자가 가지고있는 또 다른 아이디어는 글쓰기가 재미있는 것이 아니라, 모든 다른 HttpResponse 인터페이스를 직접 구현하고 원래 HttpResponse 객체의 가능한 모든 동작을 '캐시'하는 동작을 작성한다는 것입니다. 기본적으로 래퍼 자신의 개체와 원래 HttpResponse. 많은 일처럼 보이지만, 잘하면 당신이하고있는 일에 도움이 될 것입니다.