URL是IP地址时,OkHttp未发出请求

时间:2019-09-10 18:13:47

标签: android okhttp

我在Android上遇到了OkHttp的奇怪问题。当我使用URL作为IP地址发出请求时,它不起作用。好像服务器根本不存在。

我尝试对Postman,Httpie和其他各种客户端执行相同的请求,但它确实起作用。但是,OkHttp似乎无法发出请求。顺便说一下,我正在使用OkHttp的版本3。

fun getRecentPrice(token: String){
            AndroidNetworking.get("http://192.0.0.1" + URL_RECENT_PRICE)
                .addHeaders(AUTHORIZATION, TOKEN_ + token)
                .setPriority(Priority.MEDIUM)
                .build()
                .getAsJSONObject(object : JSONObjectRequestListener {
                    override fun onResponse(response: JSONObject) {
                        recentPriceMessage.value = Gson().fromJson(response.toString(), RecentPriceModel::class.java)
                    }
                    override fun onError(anError: ANError) {
                        Log.e("error", anError.errorBody)
                    }
                })
        }

我使用的是Android Fast Networking库,该库在后台使用OkHttp,但从搜索中得知这是OkHttp问题。

更新

在清单文件中的application标签内使用android:usesCleartextTraffic="true"似乎可以解决此问题。

1 个答案:

答案 0 :(得分:0)

要在OKHttp中使用不安全的HTTP,我发现必须在连接规范中启用CLEARTEXT,因为默认情况下已禁用它。

   OkHttpClient okHttpClient = new OkHttpClient.Builder()
                .connectionSpecs(Arrays.asList(ConnectionSpec.MODERN_TLS, ConnectionSpec.COMPATIBLE_TLS, ConnectionSpec.CLEARTEXT))
                .build()

   AndroidNetworking.initialize(getApplicationContext(),okHttpClient)