我正在recyclerView
使用带有retrofit 2 library的分页无限滚动在我的应用程序中加载服务器数据。但不幸的是,在滚动一些页面改造onFailure
方法后,会出现一条显示“ Unexpected end of stream
”的消息。此消息显示在任意页面中。有时它会在滚动 6 页后显示,有时会在滚动 12 页后显示。然后改造不会加载任何内容。
任何人都可以提出一些可行的建议吗?
我正在recyclerView
使用带有retrofit 2 library的分页无限滚动在我的应用程序中加载服务器数据。但不幸的是,在滚动一些页面改造onFailure
方法后,会出现一条显示“ Unexpected end of stream
”的消息。此消息显示在任意页面中。有时它会在滚动 6 页后显示,有时会在滚动 12 页后显示。然后改造不会加载任何内容。
任何人都可以提出一些可行的建议吗?
我最近遇到了这个问题,以下组合帮助了我
对于 OkHttpClient,将连接失败时重试设置为 true
OkHttpClient client = new OkHttpClient.Builder()
.retryOnConnectionFailure(true)
.build();
由于这是由连接未正确关闭引起的,请在改造请求中添加 Connection 标头
@Headers({
"Connection: close"
})
@FormUrlEncoded
@POST(Const.CHAT_LIST_API)
Call<ResponseModel<ChatListModel>> chatList(
@Field("user_id") int userid,
@Field("device_type") int device_type,
@Field("token") String token,
@Field("language") String language,
@Field("timezone") String timezone
);
以上是调用服务的接口方法。您需要将上述标题部分添加到您的服务中
重试基本上会减少机会,实际解决方案是通过标题
你可以试试
OkHttpClient client = new OkHttpClient.Builder()
.retryOnConnectionFailure(true)
.build();
只需将标题添加到您的请求中
@Headers({"Connection: close"})
这意味着您应该在每次请求后关闭连接。