用MFC编写访问HTTPS程序之忽略无效证书验证

转自:http://blog.csdn.net/lwwworkspace/article/details/6697194


最近需要写一个与HTTPS通讯的APP,但是由于本人是第一次编写这样的网络程序,所以忽略无效证书验证这个问题一直困扰了1-2天,由于在网上的资料基本上都是说同样的问题,但是忽略了一点没有说明的,就是要Query服务器的状态,经过本人不断的查资料,结果终于找到了答案,下面是一些整理好了的代码,以供日后可以查看。

IDE: VC++6.0

[cpp]  view plain copy
  1. bool WebProcess::Connect(CString strURL)  
  2. {  
  3.     DWORD dwFlags;  
  4.     DWORD dwStatus = 0;  
  5.     DWORD dwStatusLen = sizeof(dwStatus);  
  6.     CString strLine;  
  7.   
  8.     AfxParseURL(strURL, m_dwServiceType, m_strServer, m_strObject_URI, m_nServerPort);  
  9.   
  10.     try {  
  11.         m_pHttpConn = m_pSess->GetHttpConnection(m_strServer, INTERNET_FLAG_SECURE, m_nServerPort,  
  12.             NULL, NULL);  
  13.         if(m_pHttpConn) {  
  14.             m_pHttpFile = (CHttpFile*)m_pHttpConn->OpenRequest(CHttpConnection::HTTP_VERB_POST, m_strObject_URI, NULL, 1,  
  15.                 NULL, m_strHttpVersion,  
  16.                 INTERNET_FLAG_SECURE |  
  17.                 INTERNET_FLAG_EXISTING_CONNECT |  
  18.                 INTERNET_FLAG_RELOAD |  
  19.                 INTERNET_FLAG_NO_CACHE_WRITE |  
  20.                 INTERNET_FLAG_IGNORE_CERT_DATE_INVALID |  
  21.                 INTERNET_FLAG_IGNORE_CERT_CN_INVALID  
  22.             );  
  23.             //get web server option  
  24.             m_pHttpFile->QueryOption(INTERNET_OPTION_SECURITY_FLAGS, dwFlags);  
  25.             dwFlags |= SECURITY_FLAG_IGNORE_UNKNOWN_CA;  
  26.             //set web server option  
  27.             m_pHttpFile->SetOption(INTERNET_OPTION_SECURITY_FLAGS, dwFlags);  
  28.             if(m_pHttpFile->SendRequest()) {  
  29.                 //get response status if success, return 200  
  30.                 m_pHttpFile->QueryInfo(HTTP_QUERY_FLAG_NUMBER | HTTP_QUERY_STATUS_CODE,  
  31.                     &dwStatus, &dwStatusLen, 0);  
  32.                 while(m_pHttpFile->ReadString(strLine)) {  
  33.                     //m_strHtml += Convert(strLine, CP_ACP);  
  34.                     m_strHtml += strLine + char(13) + char(10);  
  35.                 }  
  36.             } else {  
  37.                 AfxMessageBox(_T("SendRequest fail!"));  
  38.             }  
  39.         } else {  
  40.             AfxMessageBox(_T("Connect fail!"));  
  41.         }  
  42.     } catch(CInternetException *e) {  
  43.         e->ReportError();  
  44.     }  
  45.   
  46.     if(dwStatus >= 200 && dwStatus < 300) {  
  47.         return true;  
  48.     } else {  
  49.         return false;  
  50.     }  
  51. }  

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值