Android Fresco SimpleDraweeView.setImageURI не работает для этого URL-адреса http

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

Это URL-адрес из предварительного просмотра ссылки для cnn. Это URL-адрес http, а не URL-адрес https. У него есть порт: 80 в пути.

Если я добавлю этот URL-адрес в веб-браузер, он будет разрешен как «http://cdn.cnn.com/cnn/.e1mo/img/4.0/logos/menu_politics.png", и там есть изображение.

Если я попытаюсь вызвать setImageURI с помощью "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», это работает.

Я использую пользовательский OKHttp3 OkHttpClient для Fresco. Я попытался использовать getUnsafeOkHttpClient, описанный здесь https://stackoverflow.com/a/25992879/1578222, но не увидел изменение поведения при этом.

Я также попытался установить OkHttpClient.followRedirects, но это тоже не помогло:

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

person CodeSmith    schedule 17.04.2019    source источник
comment
почему вы не используете разрешенный URL?   -  person SteelToe    schedule 17.04.2019
comment
Разрешенный URL-адрес тоже не работает. Кроме того, мне нужно, чтобы он работал с указанными URL-адресами, а не только с этим конкретным URL-адресом. Пример URL-адреса из cnn является проблемным URL-адресом, но это всего лишь пример того, что он не работает. Пользователь вводит URL-адреса для предварительного просмотра ссылки, поэтому значения могут быть любыми, мне нужно, чтобы он работал со всем, что возвращается из запроса предварительного просмотра ссылки. За этим URL-адресом стоит изображение, и другие компоненты могут его получить, но не SimpleDraweeView моего приложения.   -  person CodeSmith    schedule 17.04.2019


Ответы (2)


Я нашел сообщение журнала от клиента OKHttp3, и это помогло мне понять проблему:

‹-- HTTP FAILED: java.net.UnknownServiceException: связь CLEARTEXT с cdn.cnn.com не разрешена политикой сетевой безопасности

Решил изменить объект приложения файла манифеста Android, включив в него:

android:usesCleartextTraffic="true"
person CodeSmith    schedule 17.04.2019

вы можете использовать любую внешнюю библиотеку, например Picasso, а затем показать изображение, используя ее

person Tasnuva oshin    schedule 17.04.2019