2015-02-25 2 views
4

Я использую Retrofit и RxJava, но, похоже, не могу делать то, что хочу.Модернизация Наблюдения и доступ к ответу

Вот мое заявление моего веб-сервиса:

Observable<Response> rawRemoteDownload(@Header("Cookie") String token, @Path("programId") int programId); 

У меня проблема является вебсервис возвращается 403 и полезную нагрузку JSon с деталями.

Дооснащение вызываетError, только передача Throwable, поэтому я не могу проверить тело ответа.

Вот часть моего тестового кода

apiManager.rawRemoteDownloadRequest("token", 1).subscribe(new Observer<Response>() { 
     @Override 
     public void onCompleted() { 

     } 

     @Override 
     public void onError(Throwable e) { 
      // this is called and I've lost the response! 
     } 

     @Override 
     public void onNext(Response response) { 

     } 
    }); 

РЕШЕНИЕ:

Благодаря Gomino, я пошел с этим в качестве решения:

new Action1<Throwable>() { 
     @Override 
     public void call(Throwable throwable) { 
      if (throwable instanceof RetrofitError) { 
       Response response = ((RetrofitError) throwable).getResponse(); 

       System.out.println(convertToString(response.getBody())); 
      } 
     } 

где ConvertToString выглядит следующим образом:

private String convertToString(TypedInput body) { 
    byte[] bodyBytes = ((TypedByteArray) body).getBytes(); 
    return new String(bodyBytes); 
} 

ответ

6

Проверьте, не является ли броски RetrofitError:

@Override 
public void onError(Throwable e) { 
    if (e instanceof RetrofitError) { 
     Response response = ((RetrofitError) e).getResponse(); 
    } 
} 
+0

только для подтверждения. Модернизация не дает мне POJO ответа после того, как он попадает в путь ошибки? Я могу видеть только сырой JSon. – FinalFive

+0

Я не думаю, что можно попытаться получить POJO, если ошибка была сброшена, но вы можете взглянуть на метод getBodyAs в случае ошибки при модификации. Взгляните на исходный код: https://github.com/square/retrofit/blob/master/retrofit/src/main/java/retrofit/RetrofitError.java – Gomino

Смежные вопросы