2016-08-18 15 views
11

Próbuję uaktualnić do Retrofit 2.0 i dodać RxJava do mojego projektu Android. Robię wywołanie API i chcą odzyskać url i to z danymi odpowiedzi w SQLite jako pamięci podręcznejJak uzyskać adres URL żądania w dodatku 2.0 z rxjava?

Observable<MyResponseObject> apiCall(@Body body); 

A w zaproszeniu RxJava:

myRetrofitObject.apiCall(body).subscribe(new Subscriber<MyResponseObject>() { 
    @Override 
    public void onCompleted() { 

    } 

    @Override 
    public void onError(Throwable e) { 

    } 

    @Override 
    public void onNext(MyResponseObject myResponseObject) { 

    } 
}); 

W Retrofit 1.9, mogliśmy Uzyskaj adres URL połączenia zwrotnego:

 @Override 
     public void success(MyResponseObject object, Response response) { 
      String url=response.getUrl(); 
      //save object data and url to sqlite 
     } 

Jak to zrobić z Retrofit 2.0 przy użyciu RxJava?

+0

Każdy sukces w tej sprawie? Również szukam tego – neteinstein

Odpowiedz

18

Aktualizacja:

Po ponownym przeczytaniu pytanie:

Jeśli chcesz otrzymać dostęp do surowej reakcji trzeba zdefiniować interfejs API jak:

Observable<Response<MyResponseObject>> apiCall(@Body body); 

zamiast:

Observable<MyResponseObject> apiCall(@Body body); 

Adres URL można uzyskać, używając:

response.raw().request().url() 

tutaj:
response jest odpowiedzią od Retrofit
raw jest odpowiedzią od OkHttp
request się z wnioskiem OkHttp który zawiera Url jak HttpUrl.

+4

jest przydatny w retrofit1.9, ale w retrofit2.0 i rxjava nie mogę pobrać odpowiedzi z modernizacji –