val client = OkHttpClient()
val url = "http://(url 어쩌고)"
val request: Request = Request.Builder()
.url(url)
.get()
.build();
client.newCall(request).enqueue(object : Callback {
override fun onFailure(call: Call, e: IOException) {
runOnUiThread{ Log.d("test","failt")}
}
@Throws(IOException::class)
override fun onResponse(call: Call, response: Response) {
if (response.isSuccessful) {
val myRequest = response.body!!.string()
runOnUiThread { Log.d("testRequest", myRequest) } // 통신 결과 값
}
}
})
이렇게 okHttpClient를 이용한, 무진장 간단하게 긁어온 통신 코드가 먹통이 된 상황.
팀원분께서 해결책을 제시해주셨는데
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
에 이 코드를 추가하고,
파일을 생성하여
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true"/>
</network-security-config>
의 config 코드를 넣어주고
다시
로 돌아와서
<use-permission>
아래
<application
android:networkSecurityConfig="@xml/network_security_config">
을 넣어준다. 그러면 성공적으로 통신 완료.
myRequest 값을 json 형식으로 받아올 수가 있다.
진짜 몇시간을 고생했는지 허참 코딩은 너무 어려워 ㅜㅜ
알고보니 안드로이드 9 이상이면 안되는 현상인가 봄.
이거 추가하고도 통신이 안돼서 확인해보니까
javax.net.ssl.SSLHandshakeException: Chain validation failed
에러가 발생했길래 avd cold boot로 실행하니까 바로 되더라