안드로이드 okhttp
저는 최근의 안드로이드 앱 개발시에는 대부분 okhttp를 사용하고 있습니다.
squre에서 만든 오픈소스 http client 입니다.
최근 추세를 보면 android용 http client는
okhttp, volley 둘중에 하나가 많이 쓰이고
어노테이션 활용이 가능한 retrofit까지해서
이 세개가 대부분이더군요.
compile 'com.squareup.okhttp3:okhttp:3.9.0'
간단하게 gradle에 추가해주시면 별다른 추가 설정없이 이용이 가능합니다.
private final OkHttpClient client = new OkHttpClient();
public void run() throws Exception {
Request request = new Request.Builder()
.url("http://publicobject.com/helloworld.txt")
.build();
client.newCall(request).enqueue(new Callback() {
@Override public void onFailure(Call call, IOException e) {
e.printStackTrace();
}
@Override public void onResponse(Call call, Response response) throws IOException {
try (ResponseBody responseBody = response.body()) {
if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);
Headers responseHeaders = response.headers();
for (int i = 0, size = responseHeaders.size(); i < size; i++) {
System.out.println(responseHeaders.name(i) + ": " + responseHeaders.value(i));
}
System.out.println(responseBody.string());
}
}
});
}
당연히 동기식과 비동기식을 모두 지원하는데
비동기식이긴하나 이때 받은 callback 메소드에서 ui를 변경하거나 할수는 없기 때문에
별도의 hanlder를 사용하셔야 합니다.
그게 약간 아쉽긴하지만 매우 좋은 라이브러리 입니다.