Ошибка 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 . Не пойму в чем причина. В другом приложении аналогичный код работает без сбоев. Что я делаю не так?