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

时间:2019-04-17 15:46:28

标签: java android http okhttp3 fresco

mySimpleDraweeView.setImageURI(Uri.parse("http://cdn.cnn.com:80/cnn/.e1mo/img/4.0/logos/menu_politics.png"));

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

如果我将该URL放入网络浏览器中,它将解析为“ 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);

2 个答案:

答案 0 :(得分:0)

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

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

解决了将Android Manifest文件的Application对象更改为包含以下内容的问题:

android:usesCleartextTraffic="true"

答案 1 :(得分:0)

您可以使用任何外部库,例如Picasso,然后通过使用它来显示图像