제이슨의 개발이야기

[안드로이드 코틀린] 코루틴을 이용해서 간단한 okhttp 통신 본문

안드로이드

[안드로이드 코틀린] 코루틴을 이용해서 간단한 okhttp 통신

제이쓰은 2021. 3. 18. 19:11
728x90
반응형

오늘은 코루틴을 이용해서 okhttp통신을 하는 방법을  매우매우  [간단] 하게 블로그에 적어보자 합니다

부족하지만 블로그 내용을 보고 코루틴을 이용한 http 통신을 하는 원리를 알아갔으면 좋겠습니다 ㅎㅎ

저의 개발 환경은 안드로이드 스튜디오 입니다!

 

코루틴에 대해서 간단하게 설명하자면 코루틴은 동시성 프로그래밍을 가능하도록 만든 개념인대 간단하게 동기, 비동기 호출이 가능하고 필요에 따라 메인쓰레드 또는 새로운 쓰레드 를 이용하기 쉽게 지원해주고 있다 

 

build.glide app 수준에서 종속성을 아래와 같이 추가해준다 

 

implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.9'

 

 

그리고 아래에 이미지를 보면

코루틴 스코프 를 이용해서 영역에 따라 메인쓰레드로 실행 하는 부분과 다른 쓰래드로 비동기 실행 하는 이미지이다 

 

Dispatcher.Main -> 해당 영역을 메인 쓰레드로 실행 하겠다는 의미!

.launch -> 동기 실행을 하겠다는 의미!

 

Dispatcher.Default -> 해당 영역을 새로운 쓰레드로 실행 하겠다는 의미

.async -> 비동기 적으로 실행 하겠다는 의미! 

 

okhttp 통신은 network 이므로 메인 쓰래드로 실행 하면 오류가 발생 할 수있습니다 구 버전 안드로이드 스튜디오 같은 경우 메인 쓰레드로 실행 하더라도 오류는 발생하지 않지만 별로 옳바른 방법은 아닙니다 network는 반드시 메인 쓰레드 말고 다른 쓰레드로 실행해주세요 

 

메인 쓰레드가 새로운 쓰래드가 비동기적으로 실행하고 결과값이 나올 떄까지 메인 쓰레드는 기다리는 원리입니다  

 

그 다음에 okhttp 통신을 이용하기 위한 객체 클래스 하나를 만들겠습니다

 

testHttp 클래스에 send 함수를 만들었습니다

 

var client = OkHttpClient.Builder().build() -> client는 데이터를 보내는 이 라고 생각하시면 됩니다  OkHttpClient.Builder().build()을 통해서 client 객체 생성 

var req = Request.Builder().url("https://www.naver.com").build() -> 원하는 요청문을 만듬 url은 원하는 url 주소를 기입 하시면 되고 해당 코드는 get() 방식의 코드 이고 post() 일경우 따로 requestBody문을 만들어서 req에 넣어야합니다 

 

 

client.newCall(req).execute().use{

 

새로운 콜(요청)을 실행 하고 그 결과에 따라 원하는 내용 입력!!!!

// 전송부분!!

.....

}

이런식으로 작성 하고 통신에 여부에 따라 "성공 통신" 또는 "실패" 를 출력합니다 저 위에 형식은 get() 방식의 통신이고 post 방식으로 통신을 하게 되면  따로  requestBody를 만들고 body 문을 꾸며야 됩니다!!  자세한 설명은 생략하겠습니다!!

 

아 그리고 앞서 말한 대로 testHttp.send() 는 새로운 쓰레드에 비동기로 실행할 거기 때문에 async.{ testHttp.send()} 에 넣어줍니다 

그리고 var result를 선언하여 비동기으로 실행 한 결과 같을 result에 넣습니다

 

 result로 받고 println()으로 출력합니다

성공 통신!!

728x90
반응형