Использование соединения https для исходного изображения в формах Xamarin - PullRequest
1 голос
/ 04 апреля 2020

Я занимаюсь разработкой приложения с использованием форм Xamarin (4.5.0.356).

Мне нужно показать изображение, полученное по ссылкам HTTPS с использованием привязки по умолчанию:

<Image Source="{Binding PhotoURL}" /> 

Во время выполнения у меня есть ошибка:

javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
    at com.android.org.conscrypt.ConscryptFileDescriptorSocket.startHandshake(ConscryptFileDescriptorSocket.java:219)
    at com.android.okhttp.internal.io.RealConnection.connectTls(RealConnection.java:192)
    at com.android.okhttp.internal.io.RealConnection.connectSocket(RealConnection.java:149)
    at com.android.okhttp.internal.io.RealConnection.connect(RealConnection.java:112)
    at com.android.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:184)
    at com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:126)
    at com.android.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:95)
    at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:281)
    at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:224)
    at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:461)
    at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:127)
    at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.connect(DelegatingHttpsURLConnection.java:89)
    at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.connect(Unknown Source:0)

Я знаю, что ошибка вызвана самозаверяющим сертификатом, и я обычно исправляю этот тип ошибки с помощью HttpClientHandler , как показано ниже:

var handler = new HttpClientHandler()
            {
                ServerCertificateCustomValidationCallback = (sender, cert, chain, sslPolicyErrors) =>
                {
                    //bypass
                    return true;
                },
            };
_httpClient = new HttpClient(handler) { BaseAddress = new Uri(Constants.HTTP_BASE_ADDRESS) };

Но как мне сделать Xamarin. Android. Net .AndroidClientHandler управляет самозаверяющими сертификатами, когда механизм связывания назначает источник https элементу управления изображением?

Спасибо

...