Android-如果失败,请重试HTTP请求-获取远程资源

时间:2018-08-04 15:07:00

标签: java android ssl networking kotlin

我遵循了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()
}

渔获物

如果连接出现问题,我们将成功显示“重试”按钮。 但是,如果我们建立连接并单击它,我们将收到一些意外错误(以下屏幕截图)。

Error screenshot

  

JAVAX.NET.SSL.SSLPROTOCOLEXCEPTION:读取错误

请建议如何解决

0 个答案:

没有答案