改造仅在第一次给出EOFException

我在我的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();

将该新客户端添加到restadapter中以使用它:

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();
链接地址: http://www.djcxy.com/p/78025.html

上一篇: Retrofit gives EOFException only the first time

下一篇: Working Of Paypal Rest API