Я разрабатываю приложение для Android, в котором используется сторонний jar-файл. Я хочу отслеживать и, возможно, изменять HTTP-запросы, выдаваемые этой библиотекой. Под iOS я могу сделать это, зарегистрировав пользовательский класс NSURLProtocol
, который может проверять и управлять любыми сетевыми запросами, которые происходят в процессе приложения.
Есть ли что-нибудь подобное для Android? Признаюсь, я новичок в разработке Android, но не смог найти работающее решение этой проблемы.
У меня нет исходного кода для этого jar-файла, и я не могу полагаться на его декомпиляцию.
Несколько вещей, которые я изучил:
org.apache.http.impl.client.DefaultHTTPClient
. (Это базовый сетевой класс, используемый для запросов, которые я ищу.) Похоже, это не сработает, поскольку Android кэширует системную версию этого класса и всегда загружает ее вместо моей, даже если она установить выше в порядке загрузки.Я достаточно хорошо изучил HTTP-библиотеку Apache, и хотя в ней есть множество вещей, таких как классы HttpRequestInterceptor
, HttpResponseInterceptor
, это не приносит мне особой пользы, поскольку библиотека создает экземпляр DefaultHTTPClient
и назначает его частному члену в частном методе, к которому у меня нет доступа.
Моя конечная цель здесь — отслеживать и изменять эти запросы для целей модульного тестирования. Я не хочу, чтобы выдавались настоящие запросы; Я хочу предоставить фиктивный ответ.