首页 > 解决方案 > 使用 okHttp 从 kotlin android 应用程序连接到 EC2 托管的 Rails 服务器时出错

问题描述

我在 EC2 实例上部署了我的 rails 服务器,我正在尝试使用 http 请求从服务器获取数据(为此我正在使用okHttp。但我在某些设备中遇到了一些连接问题。我尝试找出问题但仍然无法做。

科特林代码:

val client = OkHttpClient()
val body = FormBody.Builder().build()

// to create url I am using server IP directly without any port
val urlNetworkCheck = Constants.URL_CHECK_NETWORK_CONNECTION // http://10.40.21.16/api/v1/check_network
val requestNetworkCheck = Request.Builder().url(urlNetworkCheck).post(body).build()

client.newCall(requestNetworkCheck).enqueue(object: Callback {
    override fun onResponse(call: Call, response: Response) {
         val responseNetworkCheck = response.body?.string()
         logger.info { "Network connection is present." }
    }

    override fun onFailure(call: Call, e: IOException) {
        logger.info { "Could not connect to server. Exception: " + e.message }
        runOnUiThread {
            showToast(Constants.TOAST_NETWORK_ERROR)
        }
    }
})

在许多设备上,都会显示 TOAST_NETWORK_ERROR。请让我知道这里可能出了什么问题。

更新:例外:网络安全策略不允许与 18.224.2.107 的 CLEARTEXT 通信是我得到的。

标签: ruby-on-railskotlinamazon-ec2okhttp

解决方案


看起来Android P 默认不允许非 HTTP 连接

如果您的服务器不支持 HTTPS,似乎您可以根据这篇文章专门启用它:http: //www.douevencode.com/articles/2018-07/cleartext-communication-not-permitted/

甚至这个答案:https ://stackoverflow.com/a/50834600/976880


推荐阅读