Picasso如果图像来自类似以下的https URL,则加载该图像:https://i.ytimg.com/vi/28uUsJ72a1A/hqdefault.jpg
由于youtube通过https引导所有流量,因此这将用于:http://i.ytimg.com/vi/28uUsJ72a1A/hqdefault.jpg
但是当我用我的网址http://www.example.com/images/djnsdfndsf.jpg
它将链接重定向到该站点的https版本,并仅给出错误
这是我如何加载图像Picasso.with(this).load(current.getImageURL()).into(ImageView);
So I tried using this:
//Below code for Picasso initializing once for the app
private Picasso picasso;
private OkHttpClient okHttpClient;
okHttpClient = new OkHttpClient();
picasso = new Picasso.Builder(this)
.downloader(new OkHttpDownloader(okHttpClient))
.build();
//Below code to retrieve the images whereever required on the app
picasso.with(this).load(current.getImageURL()).into(imageView)
但是上面的代码给出了无法解决OkHttpDownloader的问题
现在我使用compile 'com.squareup.picasso:picasso:2.5.2'
EDIT如何强制Picasso通过http而不是https下载?
7条答案
按热度按时间cwtwac6a1#
API级别28+中不允许HTTP请求。若要明确允许对您的域的HTTP请求,必须将以下文件添加到代码中。
添加您的域名替换aravind.me,并将此文件作为network_security_config.xml添加到参考资料中的xml文件夹中。
将其添加到清单文件中的应用程序标记。
fumotvh32#
试试这个:
将URL中的
http
替换为https
。lvjbypge3#
默认情况下,
Picasso
使用UrlConnectionDownloader
。从名称可以理解,它使用的是HttpURLConnection
,不会自动从HTTP重定向到HTTPS(反之亦然)。遵循重定向可能会产生严重的安全后果。克服这一点的方法是使用OkHttp3Downloader-OkHttp 3下载器为Picasso 2实现。
要使用
OkHttp3Downloader
,必须添加依赖项csbfibhn4#
如果你想从Picasso那里得到一个回调函数,那么尝试下面的方法,然后
onBitmapLoaded()
将位图设置为ImageViewgdrx4gfi5#
CustomPicasso.java
build.gradle(模块:应用程序)
用途-
ih99xse16#
您可以将其添加到应用程序类中:
w7t8yxp57#
您的网址包含Http,那么您必须在网址中使用https,否则它将不会加载,您也无法使用正常的http下载图像。如果您想尝试,那么只需使用BitmapFactory下载http图像。