Ошибка OkHttp при попытке подключится к серверу

Есть класс

class Httpd (tout: Long = 5000) {
    val client = OkHttpClient().newBuilder()
        .connectTimeout(tout, TimeUnit.MILLISECONDS)
        .build()
    var host: String = ""
    var query: String = ""
    var formBody = FormBody.Builder()
    var queryParameter=""

    val response: Flow<String> = flow {
        emit(run())
    }


    fun run(): String {
        try {
            val request = Request.Builder()
                .url("http://$host/$query?$queryParameter")
                .post(formBody.build())
                .build()

            client.newCall(request).execute().use { response ->
                if (!response.isSuccessful) return "error"
                else if (response.code == 200) return response.body!!.string()
                else return "error"
            }
        } catch (e: SocketTimeoutException) {
            return "error"
        } catch (e: ConnectException) {
            return "error"
        }

    }
}

Пытаюсь получить данные с сервера

class WiFiListViewModel: ViewModel() {
    private lateinit var http: Httpd
    var job: Job? =null
    val livedata= MutableLiveData<String>()

    init {
        getWiFiList ()
    }

     private fun getWiFiList (){
         http = Httpd(7000)

         http.host = "http://192.168.100.100"
         http.query = "findwifilan.htm"

         job = CoroutineScope(Dispatchers.IO).launch {
                 http.response.collectLatest {
                     if (it != "error") {
                         livedata.value = it
                         println(it)
                     }
                 }
             job?.cancel()
         }
     }
}

Но когда выполнение кода доходит до client.newCall(request).execute().use приложение закрывается с ошибкой E/AndroidRuntime: FATAL EXCEPTION: DefaultDispatcher-worker-1 . Не пойму в чем причина. В другом приложении аналогичный код работает без сбоев. Что я делаю не так?


Ответы (0 шт):