в нашем проекте весенней загрузки мы используем OkHttpClient3 в качестве http-клиента. Мы также делаем вызовы для большого количества различных открытых API. Некоторые из них ограничивают количество звонков в секунду. В качестве решения мы реализовали Interceptor под названием DelayInterceptor.
В принципе; создать класс Java, который реализует okhttp3.Interceptor
.
В этом методе public Response intercept(Chain chain)
ищите хост, который вы запрашиваете (чтобы различать вызовы, сделанные на разные публичные API), используя chain.request().url().host()
, и если вы сделали вызов этому хосту, уже используйте Thread.sleep(amount);
Поскольку наш проект относительно новый, мы не анализировали возможные недостатки, но пока он работает.
P.S .: Вы также можете заглянуть в проект AsyncHttpClient , в котором уже есть решение этой проблемы (хотя я не смог найти его с помощью простого поиска в Google).