常規情況下創建Web請求,並獲取請求數據的代碼如下:
WebRequest req = WebRequest.Create(url);
req.Timeout = 15000;
WebResponse result = req.GetResponse();
Stream ReceiveStream = result.GetResponseStream();
如果需要在代碼中加入證書,則需要使用HttpWebRequest對象進行請求,代碼如下:
//添加驗證證書的回調方法
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(ValidateServerCertificate);
HttpWebRequest httpRequest = (HttpWebRequest)HttpWebRequest.Create(strQueryURL);
X509Certificate cerCaiShang = new X509Certificate(System.Web.HttpContext.Current.Server.MapPath(setting.PfxFile), setting.key);
httpRequest.ClientCertificates.Add(cerCaiShang);
HttpWebResponse httpResponse = (HttpWebResponse)httpRequest.GetResponse();
Stream receiveStream = httpResponse.GetResponseStream();
// 回調方法
public static bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
if (sslPolicyErrors == SslPolicyErrors.None)
return true;
return false;
}
本來這就算是完成了,但總是失敗,原因未知,與萬惡的Windows有關,還需要將客戶端的證書+私鑰(pfx 或p12 文件),導入到操作系統(windows)的相關證書區域,步驟:
Windows xp/2003
1. 單擊 開始 ,單擊 運行 ,鍵入 mmc ,然后單擊 確定 。
2. 在 文件 菜單上單擊 添加/刪除管理單元 。
3. 在 添加/刪除管理單元 對話框中,單擊 添加 。
4. 在 添加獨立管理單元 對話框單擊 證書 ,然后單擊 添加 。
5. 在在 證書管理單元中 對話框中單擊 計算機帳戶 ,然后單擊 下一步
6. 在 選擇計算機 對話框中,單擊 完成 。
7. 在 添加獨立管理單元 對話框單擊 關閉 ,然后單擊 確定 。
8. 展開 證書 (本地計算機) ,展開 個人 ,然后單擊 證書 。
9. 右鍵 -》 所有任務-》導入 選擇你的證書導入
Windows 7
1. 單擊 開始 ,單擊 運行 ,鍵入 mmc ,然后單擊 確定 。
2. 在 文件 菜單上單擊 添加/刪除管理單元 。
3. 在 可用的管理單元 列表中選擇 證書 ,點擊 添加 。
4. 在 證書管理 對話框中選擇 計算機賬戶 ,然后單擊 下一步
5. 在 選擇計算機 對話框中,單擊 完成 。
6. 在 添加或刪除管理單元 對話框單擊 確定 。
7. 展開 證書 (本地計算機) ,展開 個人 ,然后單擊 證書 。
8. 右鍵 -》 所有任務-》導入 選擇你的證書導入
再次測試,就可以使用了。