我需要使用p12证书(带密码)+ cookie进行身份验证。
这是我的代码:
X509Certificate2 certificate = new X509Certificate2();
byte[] rawCertificateData = File.ReadAllBytes(@"C:\mycert.p12");
certificate.Import(rawCertificateData, "c3rtifPassw0rd", X509KeyStorageFlags.PersistKeySet);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://apidomain.com/getDatas");
request.ClientCertificates.Add(certificate);
request.CookieContainer = new CookieContainer();
request.CookieContainer.Add(new Cookie("apicookie", "myCookieString") { Domain = "apidomain.com" });
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
using (var reader = new System.IO.StreamReader(response.GetResponseStream(), ASCIIEncoding.ASCII))
{
result = reader.ReadToEnd();
}
return result;
服务器返回400错误。
答案 0 :(得分:2)
(我没有足够的声誉通过评论回答) 根据我使用webrequest的经验,一些服务器拒绝非标准请求;我的意思是,首先,您需要确保为http请求(用户代理,引用,语言等)正确设置所有标头。
然后,确保使用.NET Framework 4.5或更高版本,因为旧版本在管理某些证书时遇到问题。