我正在从服务中自动下载文件。有些文件可以使用 public 下载API,有些文件可以使用 private下载API。私人API要我使用证书。站点开发者的站点有执行相同操作的软件,但没有自动下载。该软件要求您在设置中指定随附的证书副本(2012 年 10 月34日)。它还需要私有函数来指定我拥有的个人证书。
在我的程序中,我收到了个人证书并发送了请求,但服务出错了。据我了解,您仍然需要按照他们的软件要求以某种方式指定根证书的快照。即客户端发送时必须使用2个证书。我无法理解。之前没用过证书。所以我遇到了麻烦
public async Task CallWebService()
{
var _url = "http://xxxxxx.ru:7081/PersonalApi/PersonalApiService.svc/ByCertificate";
var _action = "http://xxxxx.ru/soft/dssi/XXXX/XXX/Web/Api/PersonalApi/IPersonalApiService/TestAuthentication";
XmlDocument soapEnvelopeXml = CreateSoapEnvelope();
HttpWebRequest webRequest = CreateWebRequest(_url, _action);
var store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadOnly);
X509CertificateCollection certs = store.Certificates.Find(X509FindType.FindBySerialNumber, "2C1EC4D41005000071B0", false);
webRequest.ClientCertificates = certs;
InsertSoapEnvelopeIntoWebRequest(soapEnvelopeXml, webRequest);
try
{
var response = await webRequest.GetResponseAsync();
string soapResult;
using (StreamReader rd = new StreamReader(response.GetResponseStream()))
{
soapResult = rd.ReadToEnd();
}
Console.Write(soapResult);
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
}
}
@gregor 如果您仍然感兴趣: