我在我的 Android 项目中第一次使用框架 Retrofit。它处理与后端的通信。现在最奇怪的是,在 Android 4.4 上,一切都像一个魅力。在下面的每个版本中。我得到一个 RetrofitError 类型的 java.io.EOFException。所以它第一次失败,然后当我按下重试按钮时它就起作用了。那么为什么第一次失败呢?
我想解决这个问题,因为用户需要点击重试很烦人......
有人对此有解决方案吗?
我找到了解决方案。在 Android 4.4 中,它们与 OkHttpclient 一起工作,这就是它在 4.4 上工作而不是在旧 Android 版本上工作的原因。
要解决这个问题,请在 gradle 中添加一个依赖项:
compile 'com.squareup.okhttp:okhttp-tests:1.5.1'
并像这样创建一个新客户端:
OkHttpClient client = new OkHttpClient();
将该新客户端添加到重新适配器以使用它:
setClient(new OkClient(client))
现在应该解决该错误。
这个错误似乎是由于以前的连接重用而发生的。您可以禁用 keepalive 以避免它:
System.setProperty("http.keepAlive", "false");
我终于解决了这个问题。解决方案是同时使用 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();