我是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请求。请对此提供帮助。