Я новичок в Kotlin. я пытаюсь создать приложение, используя OkHttp для отправки веб-запросов на API-интерфейс quickapi, загружая файлы, когда нажимаю кнопку Я уже добавил настройки Connect Timeout, но я хочу обработать соединение Timeout, когда Connect Timeout я хочу показать пользователю диалог, чтобы повторить попытку или отменить.
private fun StartDwonload() {
val url = editText.text.toString()
val client = OkHttpClient.Builder()
.connectTimeout(10, TimeUnit.SECONDS)
.writeTimeout(10, TimeUnit.SECONDS)
.readTimeout(30, TimeUnit.SECONDS)
.build()
val requests = Request.Builder()
.url("xxxxxxx?igurl="+url)
.get()
.addHeader("x-rapidapi-host", "xxxxx")
.addHeader("x-rapidapi-key", "xxxx")
.build()
client.newCall(requests).enqueue(object : Callback {
override fun onFailure(call: Call, e: IOException) {}
override fun onResponse(call: Call, response: Response){
val responseData = response.body()?.string()
runOnUiThread{
try {
var json = JSONObject(responseData)
println("Request Successful!!")
println(json)
val responseObject = json.get("downloadurl").toString()
val request = DownloadManager.Request(Uri.parse((responseObject)))
request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI or DownloadManager.Request.NETWORK_MOBILE)
request.setTitle("Download")
request.setDescription("Dwonloading ...")
request.allowScanningByMediaScanner()
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED)
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS,"${System.currentTimeMillis()}.mp4")
print(DownloadManager.ACTION_DOWNLOAD_COMPLETE)
val manager = getSystemService(Context.DOWNLOAD_SERVICE) as DownloadManager
manager.enqueue((request))
progressDialog.dismiss()
} catch (e: JSONException) {
e.printStackTrace()
}
}
}
})
}
Любая идея, пожалуйста?