我在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"
似乎可以解决此问题。
答案 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)