Я работаю над многослойным приложением для Android, где мне нужно перехватывать HTTP-запросы, изменять один из заголовков, выполнять и возвращать ответы.Я не могу изменить способ создания запросов, но я могу изменить базовый URL-адрес API, используемый для запросов.Подход, который я выбрал, заключался в написании прокси-сервера, прослушивающего определенный порт и выполняющего работу посредника:
- прием запросов,
- применение необходимых изменений к HTTP-запросам,
- его выполнение и
- возвращение ответа.
Я применил SparkJava в качестве HTTP-сервера и OkHttpClient в качествеHTTP-клиент.Он работал как шарм, пока я не обнаружил, что он работает только на Android 8 и новее.Существует проблема с отсутствием ThreadLocal<S> ThreadLocal.withInitial (Supplier<? extends S> supplier)
в API до 26, который используется в бэкэнде SparkJava - Jetty).
Я думаю, я попытаюсь найти другую среду HTTP-сервера, работающую в более старом API, и переопределить мой прокси.
Между тем, кажется ли, что этот подход приемлем?Или, может быть, есть другой способ проксирования HTTP-запросов в приложении Android, который позволял бы изменять заголовки, используя только опцию изменения URL базового API?
Все идеи очень ценятся.
PS.Я знаю, что в типичном приложении такой вид проксирования создает проблему безопасности, но в данном случае это не проблема.