3

我正在recyclerView使用带有retrofit 2 library的分页无限滚动在我的应用程序中加载服务器数据。但不幸的是,在滚动一些页面改造onFailure方法后,会出现一条显示“ Unexpected end of stream”的消息。此消息显示在任意页面中。有时它会在滚动 6 页后显示,有时会在滚动 12 页后显示。然后改造不会加载任何内容。

任何人都可以提出一些可行的建议吗?

4

3 回答 3

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
    );
    

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

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

于 2019-08-22T06:41:52.173 回答
0

你可以试试

OkHttpClient client = new OkHttpClient.Builder()
    .retryOnConnectionFailure(true)
    .build();
于 2019-08-22T06:38:15.040 回答
0

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

@Headers({"Connection: close"})

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

于 2019-08-22T06:51:01.113 回答