dev/android

[Android M] Apache HTTP Client Removal

재삐신생 2017. 1. 23. 16:23
반응형

안드로이드 6 마쉬멜로 변경점 중 골칫거리는 Apache HTTP Client Removal이다.


쉬운 대응으로 HttpURLConnection으로 변경하거나, org.apache.http.legacy를 사용해서 해결하였다면,

조금 더 나은 방향을 모색할 필요성을 느끼게 되어 이 포스팅을 하게 되었다.


Http Client

java.net패키지의 HttpURLConnection를 사용해, 응답을 받기위해 BufferedReader까지 써가면서 구현하기는 지루하고 힘들다.

대안으로 apache의 HttpComponents (https://hc.apache.org/) 를 다시 사용할 수도 있지만

이 traditional한 방법이 안드로이드에서 사라진 이유가 분명이 있을 것이다.

구글과 아파치의 문제일지, 방대한 API가 문제일지, 자세히는 모르겠으나, 새로운 버전을 사용하는데는 지장이 없다.

대신 의미도 없다.


1. square사의 OkHttp

(http://square.github.io/okhttp/)


설명 생략, 코드를 보자. GET요청이다.

public class GetExample { OkHttpClient client = new OkHttpClient(); String run(String url) throws IOException { Request request = new Request.Builder() .url(url) .build(); try (Response response = client.newCall(request).execute()) { return response.body().string(); } } public static void main(String[] args) throws IOException { GetExample example = new GetExample(); String response = example.run("https://raw.github.com/square/okhttp/master/README.md"); System.out.println(response); } }


Networking Library

일반적인 앱의 경우 대부분 네트워크를 이용하여 통신을 하게 되며, HTTP프로토콜이 가장 일반적일 것이다.

입맛에 맞게 사용하려면, 의외로 손이 많이 가는 부분이다.

low한 형태로 항상 요청을 할 순 없으니, 따로 요청을 위한 클래스를 작성할 터이니 말이다.

물론 그외 문제점이나 고려할 사항을 생각하면 빙산의 일각


아파치의 DefaultHttpClient를 대체할 녀석이 필요하고, 또 강화된 성능과 기능까지 있다면 얼마나 좋을까??

라이브러리의 활용을 고려해보자.


1. Volley

2013 구글에서 공개한 기가막힌 녀석

(https://android.googlesource.com/platform/frameworks/volley/)


소개 영상의 화살을 무더기로 날리는 사진을 보면 알 수 있듯이, 이것은 다량의 요청에 특화된 녀석이다.


2. Retrofit

square사의 엄청난 녀석

(https://square.github.io/retrofit/)


이 녀석은 정보다 별로 없다. 인기가 있다고 하는데, 직접 사용해봐야 알겠다.


반응형

'dev > android' 카테고리의 다른 글

카카오 SDK android key hash 이슈  (0) 2018.04.12
[android] dump internal sdcard  (0) 2016.05.14
Google Map API V1 to V2 migration  (0) 2016.02.13
[Android ICS] init.d enabled  (0) 2013.02.12
안드로이드 롬업 후 SMS MMS 문제  (0) 2013.02.05