2010-07-11 2 views
2

내가 뭘 원하는 내가 로깅을 완료 한 후 지금, 동일한 스트림을 사용하려면 내가로깅의 InputStream 다음 XML 파싱을 사용

org.apache.http.HttpEntity entity = response.getEntity(); 
org.apache.http.HttpResponse content =entity.getContent(); 


      //Print the result to the screen for debugging 
      //puroposes 
      if(Logging.DEBUG) { 
       InputStream content =entity.getContent(); 

       int i; 
       StringBuilder b = new StringBuilder(); 
       while((i=content.read()) != -1) { 
        b.append((char)i); 
       } 

       Log.d(TAG, b.toString()); 
      } 

를 사용 가서 InputStream로부터의 출력을 로그입니다 XML 파서를 통해. 문제는 증기가 이미 사용되었다는 것입니다.

디버깅 전후에 mark()reset() 호출을 시도했지만 작동하지 않았습니다.

답변

2

반환되는 입력 스트림이 지원하는지 여부에 따라 다릅니다. InputStream 클래스의 기본 구현은 아무 것도 수행하지 않습니다 (예 : described in the API). 따라서 반환 된 스트림이 실제로 지원하는지 여부를 확신 할 수 없습니다. 이를 확인하려면이 방법을 지원하는 BufferedInputStream에 포장해야합니다.

+0

덕분에 – jax

+0

덕분에이 솔루션이 도움이 될 수도 있습니다. http://shomeser.blogspot.com/2013/12/redirect-stream-to-logcat.html –

0

일반적으로 mark()reset()은 임의의 InputStream에서 작동하지 않습니다. 하위 데이터 소스가 이러한 작업을 지원하는 FileInputStream과 같은 하위 클래스에서만 작동합니다.

SocketInputStream 또는 콘솔 InputStream과 같은 경우, 스트림 옵션 전체를 읽고 버퍼링하는 것이 유일한 옵션입니다. 예 : 메모리에 저장하거나 임시 파일에 기록합니다.