android 의 HTTP 클라이언트 라이브러리에 대한 설명은 다음의 URL을 참고할만하다.
http://helloworld.naver.com/helloworld/377316
이번 포스팅에서는 이중 loopj 를 이용하여 rest api를 호 출하는 방법을 살펴보겠다. loopj 는 다음의 URL에서 다운로드 할수 있다.
http://loopj.com/android-async-http/
설치는 android studio의 build.gradle 에 다음을 추가해 주면 된다.
dependencies { compile 'com.loopj.android:android-async-http:1.4.5' } |
HTTP 접근을 위해서는 INTERNET Permission이 필요하다. android.manifest 에 다음의 퍼미션을 추가해 준다.
</application> <uses-permission android:name="android.permission.INTERNET"></uses-permission> </manifest> |
1. AsyncHttpClient 설정
AsyncHttpClient 를 선언하고 onCreate에서 생성해준다.
private AsyncHttpClient mHttpClient; ..... .... @Override protected void onCreate(Bundle savedInstanceState){ ....... mHttpClient=new AsyncHttpClient(); } |
2. JSON Message를 POST 하기
JSONObject 객체를 이용하고 AsyncHttpClient의 post 메소드를 이용한다.
postBodyMsg.put("testkey","testvalue");
StringEntity entity=new StringEntity(postBodyMsg.toString());
mHttpClient.post(this.getApplicationContext(),"http://testurl/test",entity,"application/json",
new AsyncHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
Log.d(TAG,"Http Post Success");
Log.d(TAG,"Received Msg:"+responseBody.toString());
}
@Override
public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
Log.d(TAG,"Http Post Fail");
Log.d(TAG,"Status Code:"+statusCode);
}
});
post 메소드에는 [context], [url string], [bodymsg string], [contents-type string], [responsehandler] 가 입력이 된다.
3. URL에 GET 요청 보내기
URL에 GET 요청 보내는 것은 간단한다.
mHttpClient.get("http://testurl/testget",new AsyncHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
Log.d(TAG,"Http get Success");
Log.d(TAG,"Received Msg:"+responseBody.toString());
}
@Override
public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
Log.d(TAG,"Http get Fail");
Log.d(TAG,"Status Code:"+statusCode);
Log.d(TAG,"Error:"+error.getMessage());
}
});