我正在使用捆绑在我的应用程序中的Psiphon vpn,因此所有REST调用都通过本地端口。
我已在OkHttp
的{{1}}客户中添加了代理,如下所示:
Retrofit
到目前为止,一切正常,我可以通过本地代理成功加载所有文本内容,但是由于Glide具有自定义连接,因此无法加载图像。
现在我想将类似于上述代码的代理设置为Glide或其他任何用于图像加载的库
我正在像这样使用Glide“ 4.8.0”:
OkHttpClient.Builder client =
new OkHttpClient.Builder().proxy(new Proxy(Proxy.Type.HTTP,
new InetSocketAddress("localhost", randomPort )));
builder.client(client.build());
retrofit = builder.build();
答案 0 :(得分: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连接