안드로이드, HttpClient vs. HttpURLConnection |
HttpClient
HttpClient 는 아파치 라이브러리를 사용. DefaultHttpClient 와 AndroidHttpClient 가 제공된다. 방대한 API 가 지원하고, 버그가 별로 없이 안정적으로 동작한다. 하지만, 너무 방대한 API 를 제공하여 안드로이드 개발팀은 이 클래스들을 더 이상 지원하지 않는다.
HttpURLConnection
HttpURLConnection 은 가벼운 version 의 HttpClient 라 볼 수 있겠다. 핵심적인 API 들만을 가지고 있다. 그러나 프로요 이전 버전의 경우 HttpURLConnection 클래스에 이상한 버그들이 있었다. InputStream 을 열어둔 상태에서 close 를 호출하면 커넥션 풀이 오작동 하는 일이 발생하는 등.. ( 개발자들이 커넥션 폴링 기능을 비활성시켜서 해결했다 함 )
HttpURLConnection 은 압축된 Http Response 를 수신하는 기능도 추가되었다. http 요청시 자동으로 헤더에 Accept-Encoding: gzip 이 추가되며, 개발자가 인코딩, 디코딩 등에 신경쓰지 않고 내용물을 잘 받을 수 있도록 설계되었다. ( getConentLength() 함수는 압축된 형태의 length 를 이용하기 때문에 주의해야 한다. 혹은 Accept-Encoding="identity" 값을 넣던지 해서 압축방식을 사용하지 않도록 한다. )
HttpURLConnection 은 이외에도, Response Cache 기능이 추가되었으며, Https 에 관한 기능 개선도 이루어졌다.
결론
진저브레드 이상에서는 HttpURLConnection 이 훨씬 좋다. 안드로이드 팀의 서포트도 게속된다.
댓글