여기에 설명하지, 코드입니다!
시스템을 사용하여;
System.Data을 사용함;
System.Configuration을 사용함;
System.Web을 사용함;
System.Web.Security을 사용함;
시스템을 사용하여;
System.Net을 사용함;
System.IO을 사용함;
System.Text을 사용함;
에서는 System.Security.Cryptography을 사용함;
System.Security.Cryptography.X509Certificates을 사용함;
System.Runtime.InteropServices을 사용함;
/// <요약>
/// 클래스 1的摘要说明
/// </ 요약>
공용 클래스 클래스 1
{
전용 정적 INT의 CERT_STORE_PROV_SYSTEM = 10;
개인 정적 INT의 CERT_SYSTEM_STORE_CURRENT_USER = (1 << 16);
/// 전용 정적 INT의 CERT_SYSTEM_STORE_LOCAL_MACHINE = (2 << 16);
[같이 DllImport ( "CRYPT32"의 EntryPoint = "CertOpenStore"charset에서 = CharSet.Unicode, SetLastError = TRUE)]
공용 static 통근을 IntPtr CertOpenStore (
INT storeProvider, INT encodingType,
INT hcryptProv, INT 플래그 문자열 pvPara);
[같이 DllImport ( "CRYPT32"의 EntryPoint = "CertEnumCertificatesInStore"charset에서 = CharSet.Unicode, SetLastError = TRUE)]
공용 static 통근을 IntPtr CertEnumCertificatesInStore (
IntPtr입니다 storeProvider,
을 IntPtr prevCertContext);
[같이 DllImport ( "CRYPT32"의 EntryPoint = "CertCloseStore"charset에서 = CharSet.Unicode, SetLastError = TRUE)]
공공 정적 통근자의 부울 CertCloseStore (
을 IntPtr storeProvider는
플래그 INT);
X509CertificateCollection의 m_certs;
공용 클래스 1 ()
{
m_certs = 새로운 X509CertificateCollection ();
IntPtr입니다 storeHandle;
storeHandle = CertOpenStore (CERT_STORE_PROV_SYSTEM, 0, 0, CERT_SYSTEM_STORE_CURRENT_USER 'MY');
IntPtr입니다 currentCertContext;
currentCertContext = CertEnumCertificatesInStore (storeHandle (을 IntPtr) 0);
int로 I = 0;
반면 (currentCertContext = (을 IntPtr) 0!)
{
m_certs.Insert는 (i ++ X509Certificate에 새로운 (currentCertContext));
currentCertContext = CertEnumCertificatesInStore (storeHandle, currentCertContext);
}
CertCloseStore (storeHandle, 0);
}
공공 INT 초기화 ()
{
IntPtr입니다 storeHandle;
storeHandle = CertOpenStore (CERT_STORE_PROV_SYSTEM, 0, 0, CERT_SYSTEM_STORE_CURRENT_USER 'MY');
IntPtr입니다 currentCertContext;
currentCertContext = CertEnumCertificatesInStore (storeHandle (을 IntPtr) 0);
int로 I = 0;
반면 (currentCertContext = (을 IntPtr) 0!)
{
m_certs.Insert는 (i ++ X509Certificate에 새로운 (currentCertContext));
currentCertContext = CertEnumCertificatesInStore (storeHandle, currentCertContext);
}
CertCloseStore (storeHandle, 0);
m_certs.Count를 반환;
}
공공 X509Certificate에이 [INT 지수]
{
얻을
{
// 인덱스 한계를 확인합니다.
(인덱스 <0 || 인덱스> m_certs.Count) 경우
는 null;
다른
리턴 m_certs [인덱스];
}
}
}
-------------------------------------------------- -------------------------
시스템을 사용하여;
System.Data을 사용함;
System.Configuration을 사용함;
System.Web을 사용함;
System.Web.Security을 사용함;
System.Web.UI을 사용함;
System.Web.UI.WebControls을 사용함;
System.Web.UI.WebControls.WebParts을 사용함;
System.Web.UI.HtmlControls을 사용함;
System.Text을 사용함;
System.Net을 사용함;
System.IO을 사용함;
에서는 System.Security.Cryptography을 사용함;
System.Security.Cryptography.X509Certificates을 사용함;
System.Runtime.InteropServices을 사용함;
내부 클래스 AcceptAllCertificatePolicy : ICertificatePolicy
{
공공 AcceptAllCertificatePolicy ()
{
}
공공 부울 CheckValidationResult (ServicePoint SPOINT, X509Certificate에 인증서, WebRequest 클래스 wRequest, INT certProb)
{
TRUE를 반환;
}
}
공공 부분 클래스 _Default : System.Web.UI.Page
{
보호 정적 문자열 cookieHeader;
보호 보이드를 Page_Load (객체 송신자있는 EventArgs E)
{
}
보호 공극 btnSend_Click (객체 송신자있는 EventArgs E)
{
새로운 AcceptAllCertificatePolicy ServicePointManager.CertificatePolicy = ();
= @ postData를 문자열 "CREDITID = CDB992362323";
인코딩 = Encoding.GetEncoding 인코딩 ( "GB2312")
문자열 strUrl = https://www.server.com/asdfjlsdf.jsp ;
바이트 [] = 데이터 encoding.GetBytes (postData를) ;
// 요청을 준비 ...
HttpWebRequest를 myRequest =합니다 (HttpWebRequest를)이 WebRequest.Create (strUrl)
myRequest.ClientCertificates.Add는 (S [0]); // 인증서를 고객이 선택할 수 있도록하기 위해 밖으로 통과, 그러나 여기 내 테스트 프로그램입니다 수 있습니다, 직접 내가 필요로하는 선택.
= myRequest.Method의 "POST";
myRequest.ContentType = "파일 응용 프로그램 / X는-WWW-형태-urlencoded를";
myRequest.ContentLength = data.length입니다;
myRequest.KeepAlive = true로;
() = newStream myRequest.GetRequestStream 스트림;
//发送数据
newStream.Write (데이터 0 data.length입니다);
newStream.Close ();
//读取回来的数据
HttpWebResponse 클래스 입술 = (HttpWebResponse 클래스) myRequest.GetResponse ();
위해 StreamReader SR = 새에서는 StreamReader (res.GetResponseStream (), System.Text.Encoding.Default);
txtAccept.Text sr.ReadToEnd = ();
sr.Close ();
res.Close ();
반환;
}
HTTPS : //www.cnblogs.com/ziyang/archive/2008/07/10/1240089.html 재현