使用 okHttp 从 kotlin android 应用程序连接到 EC2 托管 rails 服务器时出错

Error in connecting to EC2 hosted rails server from kotlin android app using okHttp

我在 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 通信。

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

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

甚至这个答案: