我想获取 Kotlin 中服务器返回的确切错误消息。我目前正在处理如下
Response.ErrorListener {error ->
// regProgress.hide()
val resp = error
if(error is ClientError ){
Toast.makeText(context!!.applicationContext, "User already exists", Toast.LENGTH_SHORT).show()
}
else if(error is NetworkError){
Toast.makeText(context!!.applicationContext, "Network error \nPlease check your network connection", Toast.LENGTH_SHORT).show()
}
else if(error is TimeoutError){
Toast.makeText(context!!.applicationContext, "Request time out", Toast.LENGTH_SHORT).show()
}
else if(error is AuthFailureError){
Toast.makeText(context!!.applicationContext, "Bad request \nKindly check details provided", Toast.LENGTH_SHORT).show()
}
else if(error is ServerError){
Toast.makeText(context!!.applicationContext, "Internal server error \nPlease try again", Toast.LENGTH_SHORT).show()
}
else if(error is NoConnectionError){
Toast.makeText(context!!.applicationContext, "Poor connection \n" +
"Please check your network connection", Toast.LENGTH_SHORT).show()
}
regProgressBar.visibility = View.GONE
registerBtn.visibility = View.VISIBLE
// val responseBody = error.networkResponse.data.toString()
Log.e("Data", "Response $resp")
// Log.e("Network", "Response ${error.networkResponse}")
// Toast.makeText(context!!.applicationContext, "$it", Toast.LENGTH_SHORT).show()
}
我尝试过 parseNetwork 方法但出现错误。如果有一种方法可以自动获取该方法(例如使用 ctrl o 来调出可以实现的方法),我将非常感激。
最佳答案
我能够解决这个问题
if(error.networkResponse != null){
val errorByte = error.networkResponse.data
val parseError = errorByte.toString(UTF_8)
val errorObj = JSONObject(parseError)
val errorMessage = errorObj.getString("message")
Toast.makeText(context!!.applicationContext, errorMessage, Toast.LENGTH_SHORT).show()
}
关于java - 如何在 Kotlin 中解析 Volley 中来自服务器的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59473726/