¿Cómo obtener la url de la solicitud en retrofit 2.0 con rxjava?
Estoy tratando de actualizar a Retrofit 2.0 y agregar RxJava en mi proyecto android. Estoy haciendo una llamada api y quiero recuperar la url y con los datos de respuesta en sqlite como una caché
Observable<MyResponseObject> apiCall(@Body body);
Y en la llamada de RxJava:
- ¿Cómo crear un observable de Hashmap?
- Android RxJava, sin bloqueo?
- ¿Por qué RxJava con Retrofit en Android doOnError () no funciona, pero el suscriptor onError no
- Uso de RxJava dentro de RecyclerView Adapter
- Android: Realm.getInstance (context) devuelve una instancia de dominio ya cerrada
myRetrofitObject.apiCall(body).subscribe(new Subscriber<MyResponseObject>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(MyResponseObject myResponseObject) { } });
En Retrofit 1.9, podríamos obtener la url en la devolución de llamada de éxito:
@Override public void success(MyResponseObject object, Response response) { String url=response.getUrl(); //save object data and url to sqlite }
¿Cómo haces esto con Retrofit 2.0 usando RxJava?
- Retrofit2 y kotlin
- Compruebe que el método se llama en onNext del suscriptor de RxJava
- Observable OnCompleted no puede actualizar la interfaz de usuario
- RxJava como un bus de eventos, onNext se llama varias veces cuando sólo un mensaje de evento
- ¿Es posible obtener 2 valores en onNext () de suscriptor en rxjava android?
- Cómo actualizar la interfaz de usuario desde el servicio de Android utilizando RxJava / RxAndroid
- ¿Existe algún patrón de desarrollo que pueda reemplazar un IntentService para las solicitudes de red?
- InterruptedIOException al usar Retrofit2 con rx cuando retryOn
Actualizar:
Después de leer la pregunta otra vez:
Si desea acceder a la respuesta en bruto, debe definir la interfaz de la API como:
Observable<Response<MyResponseObject>> apiCall(@Body body);
en lugar de:
Observable<MyResponseObject> apiCall(@Body body);
Puede obtener el Url usando:
response.raw().request().url()
aquí:
response
es la respuesta de Retrofit
raw
es la respuesta de OkHttp
request
es la solicitud de OkHttp que contiene el Url
como HttpUrl
.
- Tome la foto con la intención de la cámara y la pantalla en imageView o textView?
- Eliminar una aplicación no publicada de Google Play