왜 이런 일이 발생하는지 알 수 없습니다. rx 콜백 (onCompleted(), onError(), onNext())은 내 호출에 의해 트리거되지 않습니다. 내가받을 수있는 유일한 방법이 okhttp 출력입니다 :개조 API 호출이 "HTTP FAILED : java.io.IOException : Cancelled"를 수신합니다.
D/OkHttp: --> GET https://api.privatbank.ua/p24api/exchange_rates?json=true&date=20.11.2016 http/1.1
D/OkHttp: --> END GET
D/OkHttp: <-- HTTP FAILED: java.io.IOException: Canceled
개조 모듈 :
@Module
public class RestModule {
@Provides
@Singleton
public HttpLoggingInterceptor providesHttpLogginInterceptor() {
return new HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY);
}
@Provides
@Singleton
public OkHttpClient providesOkHttpClient(@NonNull HttpLoggingInterceptor loggingInterceptor) {
return new OkHttpClient.Builder()
.addInterceptor(loggingInterceptor)
.connectTimeout(ConstantsManager.CONNECTION_TIME_OUT, TimeUnit.SECONDS)
.readTimeout(ConstantsManager.READ_TIME_OUT, TimeUnit.SECONDS)
.build();
}
@Provides
@Singleton
public Gson providesGson() {
return new GsonBuilder().create();
}
@Provides
@Singleton
public Retrofit providesRetrofit(@NonNull OkHttpClient okHttpClient, @NonNull Gson gson) {
return new Retrofit.Builder()
.baseUrl(ConstantsManager.BASE_URL)
.client(okHttpClient)
.addConverterFactory(SimpleXmlConverterFactory.create())
.addConverterFactory(GsonConverterFactory.create(gson))
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.build();
}
@Provides
@Singleton
public PrivatbankApi providesPrivatbankApi(@NonNull Retrofit retrofit) {
return retrofit.create(PrivatbankApi.class);
}
}
API 인터페이스 :
public interface PrivatbankApi {
@GET
Observable<CurrentRates> loadCurrentRates(@NonNull @Url String url);
@GET("exchange_rates")
Observable<DateRates> loadDateRates(@NonNull @Query("json") Boolean json, @NonNull @Query("date") String date);
}
구독 : 그런데
subscription = dataManager.loadDateRates(date)
.subscribeOn(Schedulers.io())
.doAfterTerminate(() -> {
})
.subscribe(dateRates -> {
// My code here...
}, throwable -> {
Timber.e(throwable, "Error while loading data occurred!");
});
, 두 호출 모두 같은 오류가 발생합니다.
D/OkHttp: --> GET https://privat24.privatbank.ua/p24/accountorder?oper=prp&PUREXML&apicour&country=ua http/1.1
D/OkHttp: --> END GET
D/OkHttp: <-- HTTP FAILED: java.io.IOException: Canceled
D/OkHttp: --> GET https://api.privatbank.ua/p24api/exchange_rates?json=true&date=20.11.2016 http/1.1
D/OkHttp: --> END GET
D/OkHttp: <-- HTTP FAILED: java.io.IOException: Canceled
나는 일회용으로 옮겨서 그것을 의도 한 서비스 클래스의 ondestroy 클래스에 넣고'disposable.dispose()'를 호출하는 것과 같은 문제가있다. –