다른 시나리오에 따라 200, 202, 4xx를 반환하는 API가 있습니다. 내가 202를 얻었을 때, 나는 200이나 4xx를 얻을 때까지 같은 API를 만들어야한다. doOnErrorNext, onError, onNext 사용하여 시도했다. 나는 문제Retrofit2 + RxJava + Jackson을 사용하여 재시도 202 상태 코드
Observable<MyPOJO> makeAPI();
Observable<MyPOJO> makeAPIImpl(){
makeAPI().doOnErrorNext(/*how to I access the error code here*/);
makeAPI().doOnNext(/*given that 202 is a success code, I expected it to come here, but it goes to Error because of JSON Mapping*/);
}
doOnErrorNext를 해독 할 수 없습니다 -> 내가 다시 API 호출을 할 수 있었다 그러나 그것은 내가 여러 답변을 확인했다
내가 원하는 해달라고 모든 오류 시나리오에 일어날 것 이것에 관해서는, 그러나 아무도이 조합을 구체적으로 해결하지 못했고 나의 유스 케이스에 다른 대답을 포함시킬 수 없습니다.
inner class ExpiredSessionInterceptor : Interceptor {
override fun intercept(chain: Interceptor.Chain): Response {
val request = chain.request()
val response = chain.proceed(request)
if (response.code() == 202) {
val newRequest = request.newBuilder().build()
return chain.proceed(newRequest)
} else {
return response;
}
}
}
:
글쎄, 202는 성공 코드이므로 개조하면 구문 분석을 시도하고 아마도 예외가 발생하여 구문 분석에 실패합니다. 응답이 올바르지 않은 경우 서버에서 202를 반환합니까? – yosriz