Glide 无法访问有代理的图片地址,配置 User-Agent
场景:
Glide 版本 4.+
-
公司返回的图片地址有经过一层 Nginx 代理,图片地址 能通过手机打开,但是Glide 就是报错,提示加载失败。
-
Glide 可以正常加载网络图片。
经过一番波折,后台同事说他有配置 请求图片的 User-Agent。于是我也 尝试配置 Glide 请求时的 Agent
Glide配置 User-Agent
@GlideModule
public class MyAppGlideModule extends AppGlideModule {
@Override
public void registerComponents(@NonNull Context context, @NonNull Glide glide, @NonNull Registry registry) {
super.registerComponents(context, glide, registry);
// 创建 OkHttpClient 并添加 User-Agent 拦截器
OkHttpClient client = new OkHttpClient.Builder()
.addInterceptor(chain -> {
Request original = chain.request();
Request request = original.newBuilder()
.header("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36")
.method(original.method(), original.body())
.build();
return chain.proceed(request);
})
.build();
//设置请求方式为okhttp 并设置okhttpClient的证书及超时时间
OkHttpUrlLoader.Factory factory = new OkHttpUrlLoader.Factory(client);
registry.replace(GlideUrl.class, InputStream.class, factory);
}
}
User-Agent
是一个 HTTP 请求头,用于标识发起请求的客户端应用程序、操作系统和设备类型。它通常包含浏览器类型、版本、操作系统及其版本等信息,让服务器跟怒不同的客户端返回合适的内容或格式(可能理解不正确)。
提示:
上面 User-Agent 一般为通用协定,如果自己公司后台有协议需自行匹配。