【问题标题】:Unexpected end of stream on okhttp3okhttp3 上的流意外结束
【发布时间】:2016-10-02 00:52:27
【问题描述】:

我已按照此link 刷新访问令牌。在将 Authenticator 添加到 okHttp 时,从改造回调 onFailure 方法得到 Unexpected end of stream on okhttp3 错误

public class TokenAuthenticator implements Authenticator {
    AccessTokenRefreshModel accessTokenRefreshModel = null;

    @Override
    public Request authenticate(Route route, Response response) throws IOException {
        Call<UserLogin> call = iService.refreshAccessToken(BuildConfig.CLIENT_ID, refreshToken);
        UserLogin userLogin = call.execute().body();
        // Add new header to rejected request and retry it
        return response.request().newBuilder()
                .header(AUTHORIZATION, userLogin.getAccessToken())
                .build();
    }
}


Call<User> call = iService.createuser(user);
call.enqueue(new Callback<User>() {
  @Override
  public void onResponse(Call<User> call, Response<User> response) {

  }

  @Override
  public void onFailure(Call<User> call, Throwable t) {
    //**Unexpected end of stream on okhttp3** 
  }

【问题讨论】:

  • 你在使用日志拦截器吗?
  • @Debanjan 是的,我正在使用日志拦截器。
  • 移除日志拦截器并检查一次。

标签: retrofit2 okhttp3


【解决方案1】:

而不是

UserLogin userLogin = call.execute().body();

试试

retrofit2.Response<UserLogin> tokenResponse = call.execute();

【讨论】:

    猜你喜欢
    • 2020-03-10
    • 1970-01-01
    • 2015-11-17
    • 1970-01-01
    • 1970-01-01
    • 2018-01-31
    • 2017-01-28
    • 2021-05-30
    • 1970-01-01
    相关资源
    最近更新 更多