오늘도 배우자!

귀찮음에 배움을 멀리하지 않기를...

Develop/Android

OkHttp 사용법

리다양 2017. 2. 9. 22:18

 사람들 마다 자신이 선호하는 개발 방식이 다르고, 사용하는 라이브러리도 다르다.

 나는 통신 라이브러리 중에서 OkHttpRetrofit이 개인적으로 가장 입맛에 맞아서 먼저 OkHttp에 관한 내용을 기록해두려  한다.


 배경지식으로 알아두면 좋은 점은 OkHttp는 Third-party(프로그래밍을 도와주는 라이브러리를 만드는 회사) library로

 이 라이브러리를 만든 회사는 'Square' 라는 회사이다.


 OkHttp는 HTTP 기반request/response 방식이며, 훗날 Retrofit이라는 라이브러리의 베이스가 된다.


1. OkHttp Gradle



2. AndroidManifest에 INTERNET Permission 추가


 이거 퍼미션 어디다가 추가해야되는지 모를까봐 한번 써드려볼게

 <manifest> 태그 밑에 <application>태그가 존재하는데 <manifest>태그와 <application>태그 사이에다가 퍼미션을 아래  의 퍼미션을 추가하면 된다.



3. OkHttp Request 보내기(Get)


  우선 Get 방식에 대한 개념을 다시 생각해보자.

 요녀석은 request를 보내고싶은 url에 query문을 더해서 request를 보내는 방식이다.

 어떤 요청, 즉 request를 보낼지 정의했다면 요청을 보내는 행동을 하도록 하는 능동적인 객체가 필요하지않겠는가??

 예를들어서 치키니 주문을 어떻게 할지 정했다면, 전화를 걸어서 "양념반 간장반 순살로 주세용!!!" 이라고...주문을 하는  사람이 필요하듯 말이다. 그런 역할을 하는것이 바로 Client임을 기억해두자.

 정리하자면 request를 정의하고 Client를 준비해두면 통신 준비가 끝난 것이다.


  자 그럼 url에 query문을 더하는 request와 그에대한 행동을 담당하는 Client를 구현해보도록 하겠다.



 친절하게도 주석을 달아놓았기 때문에 보는데 어려움이 없겠지만 덧붙여 설명하자면

 Client 초기화 -> URL Build -> Request 생성 -> Request를 붙이고 서버로 부터 오는 Response에 대한 처리를 담당하  는 Callback 작성 이렇게 진행을 하면 된다.


 이렇게 구현하고 사용법은 원하는 부분에서 호출해서 사용하면되는데 클래스로 작성해두었기때문에 다음과 같이 요청문을  작성하면 된다.




 4. OkHttp Request 보내기(Post)


  Post 방식은 Get 방식과는 다르게 Url에 쿼리문을 작성한는 것이 아니라, HTTP의 Body 부분에 첨부하여 보내는 것인데

 보통 로그인하거나, 외부에 request 할 때 보내는 Name&Value 값 들이 보이지 않기를 원할 때 사용한다.

 대충 설명했지만 뭐.. 다들 알겠지뭐...


 그럼 코드를 첨부하기 이전에 생각을 해보자.

 당연히 url은 필요하겠고.. url에 쿼리문을 작성하는 것이 아니라 HTTP Body부분에 첨부하는 것이니 Request Body를 작  성해야한다는 점

 그리고 이어서 Request Body를 Request에 붙이고 Client에 request를 정의해주며 마지막으로 Callback 메서드로 서버  의 response에 대한 처리를 담당하는 코드를 작성해주면 끝이다.


 코드로 확인해보자.



  자 보니까 쪼금 이해가 오는가~!!!!!


 *****여기서 주의 사항*****

  response.body() toString()말고 string()을 붙여야 한다는 점을 잊지말자...

  이게 이유가 있는데 response.body()를 쓰면 반환형이 toString() 메서드로는 받을 수 없는 값이다 그래서 string() 메서드   를 써주면 완벽 그 자체이다.

 

  그래서 이때까지 작성한 코드를 합쳐보면...