Android 当连接到URL失败时,如何处理HttpURLConnection
当我的数据库运行时,一切正常。但当我的手机应用程序不运行时,它总是崩溃 错误消息: 原因:java.net.ConnectException:无法连接到/httpURL 如何解决这个问题 这是我的密码:Android 当连接到URL失败时,如何处理HttpURLConnection,android,android-asynctask,kotlin,httpurlconnection,Android,Android Asynctask,Kotlin,Httpurlconnection,当我的数据库运行时,一切正常。但当我的手机应用程序不运行时,它总是崩溃 错误消息: 原因:java.net.ConnectException:无法连接到/httpURL 如何解决这个问题 这是我的密码: AsyncTaskHandleJson().execute(url) inner class AsyncTaskHandleJson : AsyncTask<String, String, String>() { override fun doInBackg
AsyncTaskHandleJson().execute(url)
inner class AsyncTaskHandleJson : AsyncTask<String, String, String>() {
override fun doInBackground(vararg url: String?): String {
var text: String
var connection = URL(url[0]).openConnection() as HttpURLConnection
try {
connection.connect()
text = connection.inputStream.use { it.reader().use { reader -> reader.readText() } }
} finally {
connection.disconnect()
}
return text
}
override fun onPostExecute(result: String?) {
super.onPostExecute(result)
handleJson(result)
}
}
AsyncTaskHandleJson().execute(url)
内部类AsyncTaskHandleJson:AsyncTask(){
重写fun doInBackground(varargurl:String?):String{
变量文本:字符串
var connection=URL(URL[0])。openConnection()作为HttpURLConnection
试一试{
connection.connect()
text=connection.inputStream.use{it.reader()。use{reader->reader.readText()}
}最后{
连接断开()
}
返回文本
}
重写onPostExecute(结果:字符串?){
super.onPostExecute(结果)
handleJson(结果)
}
}
由于代码中没有catch
块,因此当前未捕获任何异常
如果要处理连接异常
,则只需捕获它:
override fun doInBackground(vararg url: String?): String {
var text = ""
var connection: HttpURLConnection? = null
try {
connection = URL(url[0]).openConnection() as HttpURLConnection
connection.connect()
text = connection.inputStream.use {
it.reader().use { reader ->
reader.readText()
}
}
} catch (ce: ConnectException) {
// ConnectionException occurred, do whatever you'd like
ce.printStackTrace()
} catch (e: Exception) {
// some other Exception occurred
e.printStackTrace()
} finally {
connection?.disconnect()
}
return text
}
请查看。由于代码中没有
catch
块,因此当前未捕获任何异常
如果要处理连接异常
,则只需捕获它:
override fun doInBackground(vararg url: String?): String {
var text = ""
var connection: HttpURLConnection? = null
try {
connection = URL(url[0]).openConnection() as HttpURLConnection
connection.connect()
text = connection.inputStream.use {
it.reader().use { reader ->
reader.readText()
}
}
} catch (ce: ConnectException) {
// ConnectionException occurred, do whatever you'd like
ce.printStackTrace()
} catch (e: Exception) {
// some other Exception occurred
e.printStackTrace()
} finally {
connection?.disconnect()
}
return text
}
查看.为什么不
捕获
错误?就像CreativeCreatorMormaybeno所说的那样,只捕获错误(如果有),然后在处理JSON(结果)
之前检查结果
是否有可用数据。如果不绕过handleJson()
,并向用户敬酒,说数据库无法访问(或者你想告诉他们什么)@Barns如何检查结果是否有可用数据?看起来你已经有了一个可接受的答案?你不明白什么?@Barns当调用handleJson方法时,应用程序将崩溃,下面是错误消息:pastebin.com/rnlmtsv6为什么不捕获错误?就像creativecreatorormaybeno所说的那样,只需捕获错误(如果有),然后在handleJson(结果)之前
检查结果是否有可用数据。如果不绕过handleJson()
,并向用户敬酒,说数据库无法访问(或者你想告诉他们什么)@Barns如何检查结果是否有可用数据?看起来你已经有了一个可接受的答案?你不明白什么?@Barns当调用handleJson方法时,应用程序将崩溃,下面是错误消息:pastebin.com/RNLmtSV6Thanks,但当它调用handleJson时,应用程序再次崩溃,下面是错误消息:@misolo89当然,如果发生异常
,那么你将向handleJson()
传递一个空的字符串。您应该使handleJson()
相应地处理一个空的字符串
,或者当您没有要处理的内容时甚至不调用handleJson()
。谢谢,但是当它调用handleJson时,应用程序再次崩溃,下面是错误消息:@misolo89当然,如果发生异常
,然后将一个空的字符串
传递给handleJson()
。您应该使handleJson()
相应地处理一个空的字符串
,或者在没有要处理的内容时甚至不调用handleJson()
。