Android Fresco SimpleDraweeView.setImageURI 不适用于此 http url

Android Fresco SimpleDraweeView.setImageURI not working for this http url

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

这是来自 link cnn 预览的 url。它是一个 http url 而不是 https url。它在路径中有一个端口 :80。

如果我将那个 url 放入网络浏览器,它会被解析为“http://cdn.cnn.com/cnn/.e1mo/img/4.0/logos/menu_politics.png”并且那里有一张图片。

如果我尝试从网络浏览器使用“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。我尝试使用此处描述的 getUnsafeOkHttpClient ,但没有看到它的行为发生变化。

我也尝试设置 OkHttpClient.followRedirects 但它也没有修复它:

httpClient.followSslRedirects(true);
httpClient.followRedirects(true);

我发现了一条来自 OKHttp3 客户端的日志消息,它帮助我找出了问题:

<-- HTTP 失败:java.net.UnknownServiceException:网络安全策略

不允许与 cdn.cnn.com 的 CLEARTEXT 通信

解决了我将 Android 清单文件的应用程序对象更改为包括:

android:usesCleartextTraffic="true"

您可以使用 Picasso 等任何外部库,然后使用它显示图像