Я новичок в Retrofit и использую com.squareup.retrofit:retrofit:1.9.0
.У меня есть заполнение формы в приложении для Android, которое может ввести адрес, и при нажатии на кнопку сохранения, он сделает запрос 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 запрос на получение снова.Пожалуйста, помогите в этом.