2
와 API를 호출 할 때 내가 언급 libs와 함께 API를 호출에 문제가404 - Retrofit2 및 RXJava2
내 종속 노호 : 개조 예를
@Provides
@Singleton
RxJava2CallAdapterFactory provideRxJavaCallAdapter(){
return RxJava2CallAdapterFactory.createWithScheduler(Schedulers.io());
}
@Provides
@Singleton
Retrofit provideRetrofit(Gson gson, OkHttpClient okHttpClient, RxJava2CallAdapterFactory rxJavaCallAdapterFactory){
return new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create(gson))
.addCallAdapterFactory(rxJavaCallAdapterFactory)
.client(okHttpClient)
.build();
}
API를 제공
compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'
compile 'com.jakewharton.retrofit:retrofit2-rxjava2-adapter:1.0.0'
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
compile 'io.reactivex.rxjava2:rxjava:2.0.1'
코드 인터페이스
@GET("form/{slugOrUUID}")
Observable<CoreObject> getForumRx(@Path("slugOrUUID") String slugOrUUID);
그리고 임 (404)를 받고 그 결과 REST
ForumService forumService = retrofit.create(ForumService.class);
Observable<CoreObject> photography = forumService.getForumRx("sample");
photography.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<CoreObject>() {
@Override
public void onSubscribe(Disposable d) {
Log.i(TAG, "onSubscribe: ");
}
@Override
public void onNext(CoreObject value) {
Log.i(TAG, "onNext: ");
}
@Override
public void onError(Throwable e) {
Log.e(TAG, "onError: ", e);
}
@Override
public void onComplete() {
Log.i(TAG, "onComplete: ");
}
});
전화 드렸습니다 경우 마지막 장소 - 나는 RxJava없이 API를 호출하고있어 문제가 없다합니다. 누구나 무엇이 잘못 되었는가 또는 왜 그런 오류가 나는지 말할 수 있습니까?
com.jakewharton.retrofit2.adapter.rxjava2.HttpException: HTTP 404
at com.jakewharton.retrofit2.adapter.rxjava2.BodyObservable$BodyObserver.onNext(BodyObservable.java:54)
at com.jakewharton.retrofit2.adapter.rxjava2.BodyObservable$BodyObserver.onNext(BodyObservable.java:37)
at com.jakewharton.retrofit2.adapter.rxjava2.CallObservable.subscribeActual(CallObservable.java:43)
at io.reactivex.Observable.subscribe(Observable.java:10179)
at com.jakewharton.retrofit2.adapter.rxjava2.BodyObservable.subscribeActual(BodyObservable.java:34)
at io.reactivex.Observable.subscribe(Observable.java:10179)
at io.reactivex.internal.operators.observable.ObservableSubscribeOn$1.run(ObservableSubscribeOn.java:39)
at io.reactivex.Scheduler$1.run(Scheduler.java:134)
at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:59)
at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:51)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:272)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)
당신이 전화하고있는 URL을 공유 할 수 있습니다
이전 여기 간단한
kotlin
예를 더 설명과 거의 같은 질문을 answerd? 곱슬 곱슬로 유효한 값을 반환합니까? – ditnURL을 공유 할 수 없지만 내가 언급 한 것처럼 rx를 사용하지 않을 때는 문제가 없으며 우편 배달부에는 문제가 없습니다. – Robert
[logging interceptor] (https://github.com/square/okhttp/tree/master/okhttp-logging-interceptor)를 포함하고 올바른 URL이 호출되는지 확인하십시오. – nhaarman