我遵循了post,并使用Kotlin创建了简单的HTTP请求。我的目标是如果请求失败,则显示“重试”按钮。
我的应用尝试通过名为getData
的函数获取远程resource,如果没有互联网连接,该应用将显示“再试一次”按钮。单击后,它将再次调用相同的功能。如果两个通话之间建立了互联网连接,我们希望第二次收到正常响应。
fun getData() {
val url = "https://us-central1-sci-search.cloudfunctions.net/getData"
val context = this
Thread(Runnable {
try {
with(URL(url).openConnection() as HttpURLConnection) {
// optional default is GET
requestMethod = "GET"
BufferedReader(InputStreamReader(inputStream)).use {
val response = StringBuffer()
var inputLine = it.readLine()
while (inputLine != null) {
response.append(inputLine)
inputLine = it.readLine()
}
// Display the data on the screen
val data = JSONObject(response.toString())
val resultElement = TextView(context)
resultElement.text = data.getString("title")
contentContainer.post({ contentContainer.addView(resultElement) })
}
}
} catch (e: IOException) {
val retryButton = Button(context)
// retryButton.text = e.toString()
retryButton.text = "Try again"
retryButton.setOnClickListener { _ ->
contentContainer.removeAllViews()
getData()
}
contentContainer.post({ contentContainer.addView(retryButton) })
}
}).start()
}
如果连接出现问题,我们将成功显示“重试”按钮。 但是,如果我们建立连接并单击它,我们将收到一些意外错误(以下屏幕截图)。
JAVAX.NET.SSL.SSLPROTOCOLEXCEPTION:读取错误
请建议如何解决