안드로이드 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 |