2012-04-13 10 views
7

Estoy desarrollando una aplicación de Android que utiliza un jar de terceros. Quiero monitorear y posiblemente modificar las solicitudes HTTP emitidas por esa biblioteca. En iOS, puedo hacerlo registrando una clase personalizada NSURLProtocol que puede inspeccionar y manipular cualquier solicitud de red que ocurra en el proceso de la aplicación.¿Cuál es el equivalente de Android para NSURLProtocol del iOS SDK?

¿Hay algo similar para Android? Lo admito, soy nuevo en el desarrollo de Android, pero no he podido encontrar una solución para este problema.

No tengo la fuente para este jar, y no puedo confiar en descompilarlo.

Un par de cosas que he explorado:

  • Android ContentProvider. No funcionará, ya que la solución debe admitir solicitudes "http: //", no solicitudes "content: //".
  • Creando una clase personalizada org.apache.http.impl.client.DefaultHTTPClient. (Esta es la clase de red subyacente utilizada para las solicitudes que estoy buscando.) Parece que esto no funcionará, ya que Android ha almacenado en caché la versión del sistema de esta clase y siempre carga eso en lugar del mío, aunque esté configurado más alto en el orden de carga

He mirado sobre la biblioteca Apache HTTP bastante bien, y si bien tiene todo tipo de cosas como HttpRequestInterceptor, HttpResponseInterceptor clases, que no me haga mucho bien, ya que la biblioteca crea una instancia y cesionarios DefaultHTTPClient a un miembro privado dentro de un método privado al que no tengo acceso.

Mi objetivo final aquí es supervisar y modificar estas solicitudes para fines de pruebas unitarias. No quiero que se emitan las solicitudes reales; Quiero proporcionar una respuesta simulada.

Respuesta

2

Desafortunadamente no tiene suerte: no existe un marco de interceptación para toda la aplicación de ese tipo disponible para las aplicaciones de Android.

Mi sugerencia sería configurar un proxy que intercepte las solicitudes y proporcione su respuesta simulada.

Cuestiones relacionadas