2011-12-13 3 views
4

내 Android 애플리케이션은 URLConnection을 사용하여 웹 서비스에 연결합니다. 1 년 넘게 시장에 출시되어 꽤 잘 작동합니다. 그러나, 갤럭시 넥서스 사용자와 문제가 최근에 와서 : getInputStream() 던져Galaxy Nexus의 이상한 EOFException

final BufferedReader in = new BufferedReader(new InputStreamReader(uc.getInputStream()), 8192); 

EOFException :

처럼 URLConnection에서 입력 스트림 (! 아직 읽기되지 않음)를 받고합니다.

처음에는 이것이 ICS 문제 일 수 있으므로 Nexus S에 초기 빌드를 설치했지만 문제가 재현되지 않았습니다. 그런 다음 Galaxy Nexus에 액세스 할 수 있습니다. Galaxy Nexus는 내가받은 버그 보고서와 동일한 방식으로 충돌합니다. 이는 하나의 전화가 이상한 행동을하는 것은 아니라고 생각합니다.

크래시의 스택 추적은 here이고 전체 코드는 GitHub입니다. 정말 이상한데,이 앱은 안드로이드 마켓에 100 만 개 이상의 설치를하고 있으며 문제는 Galaxy Nexus에서만 발생하는 것 같습니다.

힌트 나 제안 사항을 보내 주시면 감사하겠습니다.

+0

또한 내 활기찬 실행중인 ICS에 발생합니다. –

답변

0

내 개발 과정에서 내 Xperia Arc S (Note! Non-ICS)에서 동일한 문제가 발생했습니다. 우리가 두 가지 다른 문제의 동일한 증상을 보았다는 것은 거의 확실합니다. 내 경우

은 내가 UTF8 String으로 전체 스트림을 읽고 있었다하지만 서버 측 구현은 나 숫자 byte로 첫 번째 바이트와 UTF8 String로 그것의 나머지 부분을 읽어 기다리고 있었다.

나는 왜 인지 알 수는 없지만 스트림을 읽고, 사용자 정의 프로토콜의 유형에주의를 기울여서 문제를 해결했습니다. 나는 ICS에서이 같은 오류를보고 있어요

+1

감사! Google 코드의 버그 추적기에 대한 힌트가 더 있습니다. 그것이 어떻게되는지 알려줄 것입니다. – phreezie

+1

사실, 내가 연결하고 있던 서버는 "Connection : close"헤더를 보내지 않았습니다. 이를 클라이언트 헤더에 명시 적으로 추가하면 문제가 해결됩니다. – phreezie

+0

아! 이 나쁜 녀석 (즉, 서버). 이것이 내 증상의 근본 원인이 될 수 있는지 확인해야합니다. 이 버그를 추적하는 데 큰 성과를 거뒀으며 공유에 감사드립니다! – dbm

6

, 내가 사용하지 킵 얼라이브하여 "고정"

System.setProperty("http.keepAlive", "false"); 
관련 문제