2010-05-04 3 views
1

Android의 HTTP 리소스에서 XML을 구문 분석하는 모범 사례는 무엇인가요? 저는 HttpURLConnection을 사용하여 InputStream을 검색하고 BufferedInputStream으로 래핑 한 다음 SAX를 사용하여 버퍼링 된 스트림을 구문 분석했습니다. 대부분의 경우 그것은 작동하지만, SocketTimeoutException 오류 보고서를 수신합니다. 작업 시간 초과 또는 일반 구문 분석 오류. 나는 이것이 InputStream 때문이라고 생각한다.Android의 HTTP에서 XML/스트림을 가져 오는 최상의 방법

  1. HttpURLConnection 도움말 대신 HttpClient를 사용 하시겠습니까? 그렇다면 왜?
  2. 스트림을 파일로 출력해야하며 스트림 대신 파일을 구문 분석해야합니까?

모든 입력 또는 방향에 크게 감사하겠습니다. 시간 내 줘서 고마워.

+0

임시 파일을 사용하는 이유는 무엇입니까? 클라이언트 측 캐싱을 수행하려는 경우 의미가 있습니다. 그렇지 않으면 낭비처럼 보입니다. –

+0

나는 그것이 낭비처럼 보인다는 것에 동의한다. – jeffh

답변

1

최근에이 작업을 수행 했으므로 많은 경험이 없지만 HTTPCLient를 사용했습니다. HTTPClient는 원시 URLConnection보다 몇 가지 기능을 제공합니다.이 경우 서버에 연결할 수없는 경우 세 번 다시 시도하는 것이 가장 중요합니다. 이것은 단지 패킷 손실과 관련이있는 진절머리가 난다면 도움이됩니다.

또한 SAX로 InputStream을 구문 분석하지만 중간 InputStreamReader를 사용하여 BufferedReader에서 InputStream을 래핑합니다. SAX가 내부적으로 이것을하는지는 모르지만, 경험상 BufferedStreams는 비 버퍼링 된 스트림보다 훨씬 더 잘 작동합니다. 정규 InputStream을 사용하면 각 바이트에 대한 읽기 요청을하고 있으며, 이는 허접한 연결이있는 경우에만 네트워크 문제를 일으킬 수 있습니다. 버퍼링 된 스트림은 버퍼 당 읽는 바이트 수를 읽습니다. (필자는 광산을 1024로 설정하지만 다른 값으로 시도해 볼 수 있습니다.)

희망이 있습니다.

+0

감사합니다. Nemi. 나는 현재 파서에 전달하기 전에 BufferedInputStream에 래핑 된 InputStream을 가진다. – jeffh

관련 문제