티스토리 뷰
평소에 서버에서 Get이나 Post아니면 그냥 자료를 받을때 Broadcast등을 이용해 Json 형식의 자료를 받기위해 긴 줄에 걸쳐(물론 한 번 만들어 놓으면... 복붙이지만) 해당 코드를 만들었었다. 하지만 Okhttp를 알게된 이후로는 그럴일이 없을것 같다. 너무나도 간단한 OKhttp 사용법을 살펴보자!
Okhttp 사용법
사용을 해보면 왜 이름이 Okhttp인지 알게된다. 바로 살펴보자.
1) Gradle 추가
Gradle에서 다음과 같이 추가하여준다.( 2017.06.03일 기준 최신버전이다. )
1 | compile 'com.squareup.okhttp3:okhttp:3.8.0' | cs |
2) 사용
Gradle에 추가를 해주고 Sync까지 해주었다면 바로 사용을 해보자.(이하 모든 코드는 네트워크 작업이므로 Thread에서 이루어져야 한다.)
1 | OkHttpClient client = new OkHttpClient(); | cs |
우리는 OkHttp를 사용하는 고객이라 생각하고 OkHttpClient 객체를 생성해준다. 다음으로 Get방식 Post방식등에 따라서 달라지지만 Post 방식을 사용해보겠다.
1 2 3 | RequestBody body = new FormBody.Builder() .add("Id", id) .build(); | cs |
다음과 같이 간단하게 요청할 body를 만들어 주었다. 이때 add에 사용된 왼쪽 Id는 php에서 post로 미리 받기로 정의된것이며 오른쪽의 id가 해당 안드로이드에서 보내줄 변수이다. 마지막으로 build()를 통해 몸통을 만들어주었다. 이제 몸통을 어디에 요청할 것인지 request를 통해 만들어보자.
1 2 3 4 | Request request = new Request.Builder() .url(url) .post(body) .build(); | cs |
url과 해당 url에 보낼(post 형식으로) body를 요청사항에 넣고 request를 만들어줬다. 이제 client에게 요청하도록 시켜보자.
1 | client.newCall(request).enqueue(callback); | cs |
실행만 시키는것이면 .execute()면 충분하지만 Id를 보낸 결과를 php가 json 형태로 반환한것을 받아올 것이므로 callback을 사용해야한다. execute만 사용하면 다음과 같다.
1 | client.newCall(request).execute(); | cs |
위에서나온 callback은 아래에 다음과 같이 정의되어 있다.
1 2 3 4 5 6 7 8 9 10 11 12 | private Callback callback = new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { myJSON = response.body().string(); showList(); } }; | cs |
위에서 요청한 callback이 실패했을 때와 성공했을 때가 나누어져있어 성공했을때, myJSON으로 선언된 JsonObject에 응답형식을 String으로 받고있는것을 볼 수 있다. 이렇게 편리한걸 왜 이제야 알았나싶다!
'안드로이드' 카테고리의 다른 글
[안드로이드]Viewpager Scroll 이벤트 (0) | 2017.07.01 |
---|---|
[안드로이드] TextView Onclick(클릭 이벤트) (2) | 2017.06.04 |
[안드로이드]java.lang.NoClassDefFoundError: com.google.firebase.FirebaseOptions 오류 (0) | 2017.05.25 |
[안드로이드] app:transformResourcesWithMergeJavaResForDebug' (0) | 2017.05.21 |
[안드로이드] 카카오 SDK 최신 버전 확인 (0) | 2017.05.21 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday