Как можно добавить Сертификат WebClient (C#)?

Я знаю, что довольно просто добавить сертификат HttpWebRequest. Однако я не нашел способ сделать эквивалентное использование WebClient. Basicly, я хочу отослать POST с определенным использованием сертификата WebClient.

Как был бы Вы выполнять это точное использование кода WebClient:

    var request = (HttpWebRequest) WebRequest.Create("my-url");
    request.Method = "POST";
    request.ClientCertificates.Add(new X509Certificate()); //add cert
71
задан Andrew 14 January 2010 в 18:53
поделиться

2 ответа

Вы должны подклассьте и переопределить одну или несколько функций.

class MyWebClient : WebClient
{
    protected override WebRequest GetWebRequest(Uri address)
    {
        HttpWebRequest request = (HttpWebRequest)base.GetWebRequest(address);
        request.ClientCertificates.Add(new X509Certificate());
        return request;
    }
}
91
ответ дан 24 November 2019 в 13:04
поделиться
vi `ls -tr | tail -1`
-121--3279221-

Просто подкласс WebClient , добавьте свой собственный КлиентКертификаты Свойство и переопределение WebClient.getwebRequest (System.uri) . У меня нет времени преобразовать это в C # из VB, но он должен быть довольно объяснен:

Imports System.Net

Public Class WebClient2
    Inherits System.Net.WebClient

    Private _ClientCertificates As New System.Security.Cryptography.X509Certificates.X509CertificateCollection
    Public ReadOnly Property ClientCertificates() As System.Security.Cryptography.X509Certificates.X509CertificateCollection
        Get
            Return Me._ClientCertificates
        End Get
    End Property
    Protected Overrides Function GetWebRequest(ByVal address As System.Uri) As System.Net.WebRequest
        Dim R = MyBase.GetWebRequest(address)
        If TypeOf R Is HttpWebRequest Then
            Dim WR = DirectCast(R, HttpWebRequest)
            If Me._ClientCertificates IsNot Nothing AndAlso Me._ClientCertificates.Count > 0 Then
                WR.ClientCertificates.AddRange(Me._ClientCertificates)
            End If
        End If
        Return R
    End Function
End Class
4
ответ дан 24 November 2019 в 13:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: