改造中的OnError后未发生Http GET请求

时间:2018-12-03 11:12:01

标签: android http retrofit rx-java

我是Retrofit的新手,正在使用com.squareup.retrofit:retrofit:1.9.0。我在android应用程序中填写表格,可以输入地址并单击“保存”按钮时 它将使用flatmap运算符进行翻新,从而发出http GET请求,如果用户输入错误的密码说“ 无效的密码”,则会发出error响应 收到错误响应后,它将进行OnError()回调,并允许用户再次编辑密码,然后再次单击“保存”按钮,我的retrofit API并未发出http请求。如何解决此问题?

 ApiClient.createAddress(contact).subscribe(mObserver );

    mObserver = new Subscriber<Contact>() {
    @Override public void onCompleted() {}  

    @Override public void onError(Throwable e) {                        
    onNetworkError(e);
    }

    @Override public void onNext(Contact contact) {             
    saveContact(contact);
    }
    };  

    public static Observable<Contact> createAddress(Contact mAddress) 
    {
    final String name = mAddress.getName();
    final String company = mAddress.getCompany();     
    final String country = mAddress.getCountry(); 

    final Observable<Contact> createAddressObservable = 
    sService.createAddress(name,company,country)
    .flatMap(new Func1<AddressResponse, Observable<? extends Contact>>() {
    @Override
    public Observable<? extends Contact> call(
    AddressResponse addressCreateResponse) {

    if (addressCreateResponse.isSuccess()) { 
    return Observable.just(addressCreateResponse.getAddress());
    } 
    else {
    final String errorMessage = addressCreateResponse.getMessage();
    return null; 
    }
    });     
    return createAddressObservable.subscribeOn(Schedulers.io())
    .observeOn(AndroidSchedulers.mainThread());
    }  

在上面的代码中,当我输入错误的密码时,将转到回调onError,然后允许用户编辑密码,然后单击保存按钮,它将调用ApiClient.createAddress(contact, null).subscribe(mObserver) 这不会再次发出http请求。请对此提供帮助。

0 个答案:

没有答案