Retrofit onFailure在滚动无尽的滚动侦听器时抛出“意外的流结束”消息

时间:2019-08-22 06:31:50

标签: java android android-recyclerview retrofit2 endlessscroll

我正在使用 retrofit 2库分页,以无限滚动方式recyclerView将服务器数据加载到我的应用中。但是不幸的是,在滚动某些页面改进onFailure方法后,抛出了一条显示“ Unexpected end of stream”的消息。此消息以任意页面显示。有时在滚动6页和有时12页之后显示。然后翻新不会加载任何内容。

有人可以提出一些可行的建议吗?

3 个答案:

答案 0 :(得分:0)

您可以尝试

OkHttpClient client = new OkHttpClient.Builder()
    .retryOnConnectionFailure(true)
    .build();

答案 1 :(得分:0)

我最近遇到了这个问题,以下几方面的组合帮助了我

  1. 对于OkHttpClient,将连接失败重试设置为true

    OkHttpClient client = new OkHttpClient.Builder()
      .retryOnConnectionFailure(true)
      .build(); 
    
  2. 由于这是由于连接未正确关闭引起的,因此在您的改装请求中添加一个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
    );
    

以上是将用于调用服务的接口方法。您需要将上面的标头部分添加到您的服务中

重试将基本上减少机会,实际的解决方法是通过标题

答案 2 :(得分:0)

只需将标题添加到您的请求中

@Headers({"Connection: close"})

这意味着您应在每次请求后关闭连接。