所以我使用PayPal的API。他們要求大公司發送X509Certificate以及每個SOAP API請求。我從來沒有聽說過使用證書的,它一直只是一個API請求一起發送API簽名。ICerfiticatePolicy和的ServicePoint
所以我首先創建了一個名爲Cerficate
實現了.NET ICerfiticatePolicy
類。其中一個成員方法,真的是你必須實現只有一個:
System.Net.ICertificatePolicy.CheckValidationResult(System.Net.ServicePoint, System.Security.Cryptography.X509Certificates.X509Certificate, System.Net.WebRequest, int)
到目前爲止,我無法真正理解傳遞給該方法。我想這種方法只是驗證Cerfiticate是有效的。所以,我不知道什麼的ServicePoint是什麼,通過了進去。我以爲這是內如PayPalAPIAAInterfaceClient
我的Web服務引用和代理類我也看到一個很老的例子使用的東西ServicePointManager.S,但我不明白,連看MSDN後。所以我猜你是使用ServicePointManager.ServerCertificateValidationCallback,我想回調設置爲CheckValidationResult?如果是這樣,你什麼時候這樣做?這對我來說非常混亂。
而且,所以我想我創造我的證書類的實例,並從我的硬盤讀取P12證書設置證書的屬性,然後在通過這種方法來檢查它是否有效?我想這是對的。
我仍然試圖弄清楚這件事情,我真的堅持在ServicePoint以及WebRequest上,因爲我真的在PayPal中使用了一個代理類,它在請求的底層發送請求。所以,我不明白我怎麼可以在類型的WebRequest即使通過,因爲我使用該反正代理方法。那麼我甚至會傳遞WebRequest參數呢?我使用的是SOAP API WSDL,不NVP這裏,所以我不是例如像你爲了發送通過HTTP API請求與REST服務做創建HttpWebRequest的變量。
到目前爲止,這是我已經試過:
PayPalAPIAAInterfaceClient client = new PayPalAPIAAInterfaceClient();
Certificate x509Certificate = new Certificate();
ServicePointManager.ServerCertificateValidationCallback = x509Certificate.CheckValidationResult();
client.ClientCredentials.ClientCertificate.Certificate = x509Certificate;
的問題是,我該怎麼傳遞的ServicePiont和params用於在CheckValidationResult的休息?我甚至不知道我是否打這個電話。