Как установить прокси в библиотеке Glide - PullRequest
0 голосов
/ 11 октября 2018

Я использую 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);

1 Ответ

0 голосов
/ 08 февраля 2019

Я сделал это используя custom @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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...