2017-07-03 5 views
1

Ich passe einen Interzeptor an, um das Token zu aktualisieren, wenn es abgelaufen ist. Wenn ich den Antworttext erhalte, um festzustellen, ob der Token abgelaufen ist, wird java.lang.IllegalStateException: closed ausgelöst.OKHttp 3 IllegalStateException

Hier ist mein Code mit OkHttp 3

@Override 
public Response intercept(Chain chain) throws IOException { 
    Request original = chain.request(); 
    Request.Builder requestBuilder = original.newBuilder() 
      .header("Content-Type", "application/json") 
      .header(Constants.TAG_AUTHORIZATION, "Bearer " + token) 
      .method(original.method(), original.body()); 


    Request request = requestBuilder.build(); 
    Response response = chain.proceed(request); 
    if (response.code() == 200) { 
     String json = response.body().string(); 
     try { 
      JSONObject obj = new JSONObject(json); 
      int code = obj.getInt(Constants.TAG_CODE); 
      if (code == Constants.REQUEST_CODE_TOKEN_EXPIRED) { 
       Response r = makeTokenRefreshCall(request, chain); 
       return r; 
      } 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
    } 
    return response; 
} 

Bitte helfen Sie mir!

+0

was ist die Ausnahme zu lesen? Zeige den Logcat – matrix

+0

@matrix die Ausnahme wurde nicht in intercept(), sondern in meiner RxJava onError() -Methode geworfen. –

Antwort

1

Sie dürfen den Antworttext in einem Interceptor nicht konsumieren. Wenn Sie dies umgehen möchten, verwenden Sie Response.peekBody(), die eine Kopie erstellt, die Sie lesen dürfen.

+0

peekBody wirft auch IllegalStateException –

1

Schließlich fand ich eine Lösung Antworttext ohne Ausnahme

ResponseBody body = response.body(); 
BufferedSource source = body.source(); 
if (source.request(1024)) throw new IOException("Body too long!"); 
Buffer bufferedCopy = source.buffer().clone(); 
ResponseBody newBody = ResponseBody.create(body.contentType(), body.contentLength(), bufferedCopy); 
String responseBodyString = newBody.string(); 
+0

Dies stürzt mit IllegalStateException ab –

Verwandte Themen