-
Coroutine으로 Restful Api, HttpUrlConnection 적용하여 web server접속,
2022.08.07 - HttpURLConnection
2022.08.07 RxJava HttpUrlConnection
2022.07.28 - Kotlin에 Coroutine사용
기반 준비
AndroidManifest.xml 에 추가
인터넷 권한 추가 (AndroidApi23이상에서는 필요 없다?)
<uses-permission android:name="android.permission.INTERNET" />
CleartextTraffic (필수 설정 아님)
<application ... android:usesCleartextTraffic="true" // http 사이트 접근을 위해 추가 ... /application>
UserAgent (선택사항)
웹 사이트에서는 앱을 고유하게 식별할 수 있게 하기.
httpcon.setRequestProperty("User-Agent", "test-rest-app-v0.1");
별도Thread 필요
URL.openConnection() 같은 것들은 동기식으로 응답을 기다리기에 별도의 Thread에서 호출해야 한다.
Coroutine으로 다른 Thread에 넘겨 처리하는 방법을 사용할 수 있따.
2022.07.28 - Kotlin에 Coroutine사용
Http연결
val url = URL("https://google.com/") val httpcon = mUrl1.openConnection() as HttpURLConnection if(httpcon.responseCode == HttpURLConnection.HTTP_OK) { '성공처리' } else { '실패 처리' }
이 과정에 try catch 예외처리를 해줘야 안전하다.
Json사용
val isr = InputStreamReader(httpcon.inputStream, "UTF-8") var jr = JsonReader(isr) try { jr.beginArray() while (jr.hasNext()) { jr.beginObject() while (jr.hasNext()) { var k = jr.nextName() var v = jr.nextString() cs.launch(Dispatchers.Main) { qv(" k:$k v:$v" ) } } jr.endObject() } jr.endArray() } finally { jr.close(); }
프로젝트파일
암호: infos
Android RxJava 환경
'Kotlin' 카테고리의 다른 글
Async, Launch, Cancel, CoroutineScope (0) 2022.07.28 Kotlin에 Coroutine사용 (0) 2022.07.28 CoroutineContext, Dispatchers (0) 2022.07.28 apply, also (0) 2022.07.28 run (0) 2022.07.28 with (0) 2022.07.28 Kotlin let (0) 2022.07.28 Android KTX (0) 2022.07.28