rxAndroid+retrofit 통신 결과 분기 방법 문의
조회수 2081회
안녕하세요 요즘 rxAndroid해보려고 계속 삽질하고 있는 개발자입니다 ㅠㅠ 흠...... 간단한거같은데 제가 개념이 확실히 잡히지 않아서 그런가 어렵네요 초고수님들의 조언 부탁드립니다.
현재 rxAndroid 와 retrofit 을 사용하여 서버통신을 해보고있는데요. 기본 통신 같은건 되는데 원하는 상태는 통신 성공 시에 response 값이
{
"resultCode": "1999"
"resultMsg": "토큰이 유효하지 않습니다."
"resultData": {"data": null}
}
이런형식으로 와서 resultCode 값을 확인한 후 그거에 따른 처리를 따로해주고싶은데 제가 해본방식이 2개가 있는데 둘다 뭔가.......... 이건 아니다싶어서 ㅋㅋㅋㅋ 힌트 주시면 감사하겠습니다 제가 했던 방식은 아래 2방식입니다.
1.옵저블 하나더생성
Observable<StackChangeObj> listObserable = stackChangeService.getRecentUsers();
Observable<Object> centerObserable =
listObserable.subscribeOn(Schedulers.io())
.flatMap(new Func1<StackChangeObj, Observable<Object>>() {
@Override
public Observable<Object> call(StackChangeObj stackChangeObj) {
if(stackChangeObj.getResult()==SUCESS){
return Observable.just(stackChangeObj);
}else{
return Observable.just("Empty");
}
}
});
centerObserable.subscribe(new Subscriber<Object>() {
@Override
public void onCompleted() {}
@Override
public void onError(Throwable e) {e.printStackTrace();}
@Override
public void onNext(Object o) {
/* result logic*/
}
});
2.서브젝트사용
Observable<StackChangeObj> listObserable = stackChangeService.getRecentUsers();
PublishSubject<Object> subject = PublishSubject.create();
listObserable.subscribeOn(Schedulers.io())
.subscribe(new Subscriber<StackChangeObj>() {
@Override
public void onCompleted() {}
@Override
public void onError(Throwable e) {e.printStackTrace();}
@Override
public void onNext(StackChangeObj stackChangeObj) {
if(stackChangeObj.getResult()==SUCESS){
subject.onNext(stackChangeObj);
}else{
subject.onNext("ERRORCODE");
}
}
});
subject.subscribe(new Subscriber<Object>() {
@Override
public void onCompleted() {}
@Override
public void onError(Throwable e) {e.printStackTrace();}
@Override
public void onNext(Object o) {
/* result logic*/
}
});
뭔가 올리기에는 너무 엉망이지만 힌트를 얻기위해 올려봄니다
-
(•́ ✖ •̀)
알 수 없는 사용자
댓글 입력