如何在Picasso 2.5.2中使用OkHttp 3.2.0添加基本认证

7
我正在使用Picasso 2.5.2库从远程服务器下载位图,图片的URL需要在头部进行基本身份验证。
我尝试了以下SO答案,但是它们都无法与最新的Picasso和OkHttp库一起使用。 答案-1 答案-2 答案-3

enter image description here

提前感谢。


请添加您的代码 - 您想如何进行身份验证?您是否查看过Retrofit文档Retrofit2.Builder()有一个名为authorization的属性,这可能是您要寻找的内容。 - yennsarah
1
我不是在寻找如何使用 Retrofit REST API 调用添加基本身份验证,而是需要在使用 Picasso 下载图像时添加基本身份验证。 - darwin
如果你在提供的链接中看了5秒钟,你就会找到一种配置okhttp3客户端的修改方式。 - yennsarah
1个回答

14

尝试根据您的方案和情况使用验证器配置OkHttp3客户端:

    OkHttpClient okHttpClient = new OkHttpClient.Builder()
            .authenticator(new Authenticator()
                {
                    @Override
                    public Request authenticate(Route route, Response response) throws IOException
                    {
                        String credential = Credentials.basic("user", "pass");
                        return response.request().newBuilder()
                                .header("Authorization", credential)
                                .build();
                    }
                })
            .build();

然后,使用该客户端来形成您的Picasso对象,但是对于okhttp3,您必须使用OkHttp3Downloader,就像这样:

    Picasso picasso = new Picasso.Builder(context)
        .downloader(new OkHttp3Downloader(okHttpClient))
        .build();

您可以从https://github.com/JakeWharton/picasso2-okhttp3-downloader获取OkHttp3Downloader。


好的,我会尝试这个并尽快通知您,无论如何感谢您的快速响应和代码片段。 - darwin
完美...像魔法一样运作...OkHttp3Downloader依赖是成功的关键.. - darwin
嘿,你能告诉我最终你是如何将图片设置到ImageView中的吗? - Akshay kumar
抱歉,我的服务器出了点问题! - Alberto M
不再需要使用Jake Wharton的库。这个功能已经包含在Picasso本身中(至少版本为2.71828)。 - AutonomousApps

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接