2012-04-13 4 views
7

Ich entwickle eine Android-App, die ein JAR von Drittanbietern verwendet. Ich möchte die von dieser Bibliothek ausgegebenen HTTP-Anfragen überwachen und möglicherweise ändern. Unter iOS kann ich dies tun, indem ich eine benutzerdefinierte NSURLProtocol Klasse registriere, die alle Netzwerkanforderungen, die im Prozess der App passieren, überprüfen und bearbeiten kann.Was bedeutet Android für NSURLProtocol aus dem iOS SDK?

Gibt es etwas ähnliches für Android? Ich gebe zu, ich bin neu in der Android-Entwicklung, konnte aber keine funktionierende Lösung für dieses Problem finden.

Ich habe nicht die Quelle für dieses Glas, und ich kann nicht darauf verlassen, es zu dekompilieren.

Ein paar Dinge, die ich untersucht habe:

  • Android Contentprovider. Funktioniert nicht, da die Lösung "http: //" -Anfragen und nicht "content: //" -Anforderungen unterstützen muss.
  • Erstellen einer benutzerdefinierten org.apache.http.impl.client.DefaultHTTPClient Klasse. (Dies ist die zugrunde liegende Netzwerkklasse, die für die Anforderungen verwendet wird.) Scheint, dass dies nicht funktioniert, da Android die Systemversion dieser Klasse zwischengespeichert hat und diese immer lädt, obwohl sie höher gesetzt ist in der Ladereihenfolge.

Ich habe ziemlich gut die Apache HTTP-Bibliothek sah über, und während es alle möglichen Dinge wie HttpRequestInterceptor hat, HttpResponseInterceptor Klassen, die nicht mir viel Gutes tut, da die Bibliothek instanziiert ein DefaultHTTPClient Instanz und Abtretungs es zu einem privaten Mitglied innerhalb einer privaten Methode, auf die ich keinen Zugriff habe.

Mein ultimatives Ziel ist es, diese Anfragen zu Unit-Testzwecken zu überwachen und zu ändern. Ich möchte nicht, dass die echten Anfragen ausgegeben werden; Ich möchte eine falsche Antwort geben.

Antwort

2

Sie haben leider kein Glück: Es gibt kein App-weites Abhör-Framework dieser Art für Android-Apps.

Mein Vorschlag wäre, einen Proxy einzurichten, der die Anfragen abfängt und Ihre Scheinantwort liefert.

Verwandte Themen