Я знаю, что довольно просто добавить сертификат HttpWebRequest. Однако я не нашел способ сделать эквивалентное использование WebClient. Basicly, я хочу отослать POST с определенным использованием сертификата WebClient.
Как был бы Вы выполнять это точное использование кода WebClient:
var request = (HttpWebRequest) WebRequest.Create("my-url");
request.Method = "POST";
request.ClientCertificates.Add(new X509Certificate()); //add cert
Вы должны подклассьте и переопределить одну или несколько функций.
class MyWebClient : WebClient
{
protected override WebRequest GetWebRequest(Uri address)
{
HttpWebRequest request = (HttpWebRequest)base.GetWebRequest(address);
request.ClientCertificates.Add(new X509Certificate());
return request;
}
}
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