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);
答案 0 :(得分:0)
我从OKHttp3客户端找到一条日志消息,这有助于我找出问题所在:
<-HTTP失败:java.net.UnknownServiceException:网络安全策略不允许与cdn.cnn.com的CLEARTEXT通信
解决了将Android Manifest文件的Application对象更改为包含以下内容的问题:
android:usesCleartextTraffic="true"
答案 1 :(得分:0)
您可以使用任何外部库,例如Picasso,然后通过使用它来显示图像