Как установить прокси в библиотеке Glide
Я использую Psiphon vpn в своем приложении, поэтому все вызовы REST проходят через локальный порт.
Я добавил прокси для OkHttp
клиент вRetrofit
как это:
OkHttpClient.Builder client =
new OkHttpClient.Builder().proxy(new Proxy(Proxy.Type.HTTP,
new InetSocketAddress("localhost", randomPort )));
builder.client(client.build());
retrofit = builder.build();
Пока все работает нормально, и я могу успешно загрузить все текстовое содержимое через локальный прокси-сервер, но изображения не загружаются, потому что у Glide есть пользовательское соединение.
Теперь я хочу установить прокси, аналогичный приведенному выше к Glide, или любые другие библиотеки для загрузки изображений.
Я использую Glide "4.8.0" просто так:
Glide.with(this)
.load(image_url)
.into(miniImageView);
0 ответов
Я сделал это используя кастом @GlideModule
Добавьте следующие строки в приложение build.gradle
implementation 'com.github.bumptech.glide:glide:4.8.0'
implementation('com.github.bumptech.glide:okhttp3-integration:4.8.0') {
exclude group: 'glide-parent'
}
implementation 'com.github.bumptech.glide:annotations:4.8.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.8.0'
И вот мой пользовательский модуль:
@GlideModule
public class CustomGlideModule extends AppGlideModule {
@Override
public void registerComponents(Context context, Glide glide, Registry registry) {
Builder builder = new Builder()
.readTimeout(60, TimeUnit.SECONDS)
.connectTimeout(60, TimeUnit.SECONDS);
if (VpnService.connected) {
builder.proxy(VpnService.proxy);
}
OkHttpClient client = builder.build();
OkHttpUrlLoader.Factory factory = new OkHttpUrlLoader.Factory(client);
glide.getRegistry().replace(GlideUrl.class, InputStream.class, factory);
}
}
Glide обнаружит это автоматически, используя @GlideModule
на вершине класса и будет вводить его во время выполнения. Теперь каждая загрузка изображений Glide будет проходить через мой пользовательский модуль и пользовательское соединение OkHttp.