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.