我在Android项目中第一次使用框架Retrofit。 它处理与后端的通信。现在最奇怪的部分是在Android 4.4上,一切都像魅力一样。在下面的每个版本。我得到一个RetrofitError类型java.io.EOFException。所以它第一次失败然后当我按下重试按钮时它工作。那为什么第一次失败呢?
我想解决这个问题,因为用户需要点击重试才很烦人。
有人为此获得了解决方案吗?
答案 0 :(得分:3)
我找到了解决方案。在Android 4.4中,它们与OkHttpclient一起使用,这就是为什么它在4.4上工作而不是在旧的Android版本上工作的原因。
要解决此问题,请在gradle中添加依赖项:
compile 'com.squareup.okhttp:okhttp-tests:1.5.1'
并创建一个像这样的新客户端:
OkHttpClient client = new OkHttpClient();
将新客户端添加到restadapter以使用它:
setClient(new OkClient(client))
现在应该解决错误。
答案 1 :(得分:0)
这个错误似乎是因为之前的连接被重用而发生的。您可以禁用keepalive以避免它:
System.setProperty("http.keepAlive", "false");
答案 2 :(得分:0)
我终于解决了问题。解决方案是同时使用OkClient和OkHttp。添加这两个库后,我将Retrofit上的客户端设置为OkHttp,就像那样
RestAdapter restAdapter = new RestAdapter.Builder()
.setErrorHandler(new ErrorRetrofitHandlerException())
.setEndpoint("Yout base URL")
.setLogLevel(RestAdapter.LogLevel.FULL)
.setClient(new OkClient(new OkHttpClient())) //Http Client
.build();