제이슨의 개발이야기
[안드로이드 코틀린] 코루틴을 이용해서 간단한 okhttp 통신 본문
오늘은 코루틴을 이용해서 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()으로 출력합니다
성공 통신!!
'안드로이드' 카테고리의 다른 글
안드로이드 웹뷰 대란 웹뷰란 무엇인가? (0) | 2021.03.25 |
---|---|
코틀린 코루틴이란 무엇인가?? 꼭 배워야 할까?? 코루틴 vs rx자바 (0) | 2021.03.25 |
[안드로이드] 안드로이드 SHA1 , SHA-256 인증서 발급 방법! 매우쉬움 (0) | 2021.03.12 |
[안드로이드(코틀린)]Navigation component 란 무엇일까? (0) | 2021.03.10 |
안드로이드 Ui 개발 어떤 레이아웃이 더 효율적일까? 현업에서는? (0) | 2021.03.06 |