2011년 12월 23일 금요일

HttpURLConnection 의 HTTP 연결 문제

HttpURLConnection 을 이용하여 HTTP 로 많은 통신을 요구하게 되는 경우 연결이 불안정한 경우가 있었다.

그 증상은 폰 제조사에 따라서 또는 안드로이드 버전에 따라서 문제가 발생하고 하지 않는 경우가 있었다.

Nexus S ICS 4.0.3 으로 업데이트 후 HTTP 연결 실패 확률이 상당히 높았다.

문제를 확인하던 중 아래 자료들을 찾을 수 있었다.

ssl - Android ICS: Problems to get the server certificate of the HttpsUrlConnection - Stack Overflow:
http://stackoverflow.com/questions/8398622/android-ics-problems-to-get-the-server-certificate-of-the-httpsurlconnection
Android Developers Blog: Android's HTTP Clients:
http://android-developers.blogspot.com/2011/09/androids-http-clients.html

요지는 HttpURLConnection 은 기본적으로 connection pool 을 사용하게 되는데 froyo 이전 버전까지는 connection pool 에 버그가 있어서 해당 기능을 사용하지 않게 했다는 것이다.

System.setProperty("http.keepAlive", "false");

그런데 몇몇 폰이나 ICS 4.0.3 으로 업데이트 되면서 문제가 다시 생긴 건지 아니면 뭔가 안드로이드 개발자들의 설명이 부족했던 것인지 모르겠으나 http.keepAlive 값을 false 로 설정함으로써 문제가 해결되었다.

댓글 없음:

댓글 쓰기