2012-04-13 7 views
7

Pracuję nad aplikacją dla systemu Android, która wykorzystuje słoik innej firmy. Chcę monitorować i ewentualnie modyfikować żądania HTTP wydane przez tę bibliotekę. W systemie iOS mogę to zrobić, rejestrując niestandardową klasę NSURLProtocol, która może sprawdzać i manipulować żądaniami sieci, które mają miejsce w procesie aplikacji.Co to jest odpowiednik Androida dla NSURLProtocol z pakietu SDK iOS?

Czy jest coś podobnego na Androida? Przyznaję, jestem nowy w rozwoju Androida, ale nie byłem w stanie znaleźć działającego rozwiązania tego problemu.

Nie mam źródła tego słoika i nie mogę polegać na jego dekompilacji.

Kilka rzeczy, które zbadaliśmy:

  • Android ContentProvider. Nie będzie działać, ponieważ rozwiązanie musi obsługiwać żądania "http: //", a nie "treści: //".
  • Tworzenie niestandardowej klasy org.apache.http.impl.client.DefaultHTTPClient. (Jest to podstawowa klasa sieci używana dla żądań, których szukam.) Wygląda na to, że to nie zadziała, ponieważ Android zapisał w pamięci podręcznej wersję systemu tej klasy i zawsze ładuje ją zamiast mojej, nawet jeśli jest ustawiony wyżej w kolejności ładowania.

Szukałem ponad biblioteki Apache całkiem dobrze, a jednocześnie posiada wszystkie rodzaje rzeczy jak HttpRequestInterceptor, HttpResponseInterceptor zajęć, że nie zna mnie bardzo dobrze, ponieważ biblioteka instancję DefaultHTTPClient instancji i przypisuje do prywatnego członka w prywatnej metodzie, do której nie mam dostępu.

Moim ostatecznym celem jest monitorowanie i modyfikowanie tych próśb do celów testów jednostkowych. Nie chcę, aby prawdziwe wnioski zostały wydane; Chcę dostarczyć pozorowanej odpowiedzi.

Odpowiedz

2

Niestety masz pecha: w aplikacjach na Androida nie ma takiej platformy przechwytywania dla całej aplikacji.

Moja sugestia polegałaby na skonfigurowaniu serwera proxy, który przechwytuje żądania i dostarcza Twojej fałszywej odpowiedzi.

Powiązane problemy