2016-08-18 18 views
11

Tôi đang cố nâng cấp lên Retrofit 2.0 và thêm RxJava vào dự án Android của mình. Tôi đang thực hiện cuộc gọi api và muốn lấy url và nó với các dữ liệu phản ứng trong sqlite như một bộ nhớ cacheCách nhận url yêu cầu trong trang bị thêm 2.0 bằng rxjava?

Observable<MyResponseObject> apiCall(@Body body); 

Và trong cuộc gọi RxJava:

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

    } 

    @Override 
    public void onError(Throwable e) { 

    } 

    @Override 
    public void onNext(MyResponseObject myResponseObject) { 

    } 
}); 

Trong Retrofit 1.9, chúng tôi có thể nhận được url trong cuộc gọi lại thành công:

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

Làm cách nào bạn thực hiện việc này với Retrofit 2.0 bằng RxJava?

+0

Bất kỳ thành công nào về điều này? Tôi cũng đang tìm kiếm này – neteinstein

Trả lời

18

Cập nhật:

Sau khi đọc câu hỏi một lần nữa:

Nếu bạn muốn truy cập vào các phản ứng nguyên bạn cần phải xác định giao diện API của bạn như:

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

thay vì:

Observable<MyResponseObject> apiCall(@Body body); 

Bạn có thể nhận URL bằng cách sử dụng:

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

đây:
response là phản hồi từ Retrofit
raw là phản hồi từ OkHttp
request là Yêu cầu từ OkHttp chứa Url như HttpUrl.

+4

nó rất hữu ích trong retrofit1.9, nhưng trong retrofit2.0 và rxjava tôi không thể lấy phản hồi từ trang bị thêm –

Các vấn đề liên quan