Android Fresco SimpleDraweeView.setImageURI不适用于此http网址

问题描述 投票:0回答:2
mySimpleDraweeView.setImageURI(Uri.parse("http://cdn.cnn.com:80/cnn/.e1mo/img/4.0/logos/menu_politics.png"));

这是来自cnn链接预览的网址。它是一个http网址而不是https网址。它有一个端口:80路径。

如果我将该网址放入网页浏览器中,它将被解析为“http://cdn.cnn.com/cnn/.e1mo/img/4.0/logos/menu_politics.png”并且图像就在那里。

如果我尝试从Web浏览器调用带有“http://cdn.cnn.com/cnn/.e1mo/img/4.0/logos/menu_politics.png”的setImageURI,它仍然无效。

如果我尝试用“https://cdn.cnn.com/cnn/.e1mo/img/4.0/logos/menu_politics.png”调用setImageURI它就可以了。

我正在为Fresco使用自定义OKHttp3 OkHttpClient。我尝试使用https://stackoverflow.com/a/25992879/1578222中描述的getUnsafeOkHttpClient,但没有看到它的行为发生变化。

我也试过设置OkHttpClient.followRedirects但它也没有解决它:

httpClient.followSslRedirects(true);
httpClient.followRedirects(true);
java android http okhttp3 fresco
2个回答
0
投票

我从OKHttp3客户端找到了一条日志消息,这有助于我找出问题所在:

< - HTTP FAILED:java.net.UnknownServiceException:网络安全策略不允许与cdn.cnn.com进行CLEARTEXT通信

解决了我更改Android Manifest文件的Application对象,包括:

android:usesCleartextTraffic="true"

0
投票

您可以使用任何像Picasso这样的外部库,然后使用它来显示图像

© www.soinside.com 2019 - 2024. All rights reserved.