使用 WinInet 进行 SSL 请求

    使用 WinInet API 可以建立安全套接字层 (SSL) 或专用通信技术 (PCT) HTTP 会话。安全 HTTP(表示为 HTTPS://)在 TCP 端口 443 上发生。可以使用类似于下面这样的代码来建立 HTTPS 会话:

  1. //...   
  2. hOpen = InternetOpen(...);  
  3. Connect = InternetConnect(  
  4.                           hOpen,                       // InternetOpen handle   
  5.                           "MyHttpServer",             // Server  name   
  6.                           INTERNET_DEFAULT_HTTPS_PORT,// Default HTTPS port - 443   
  7.                           "",                         // User name   
  8.                           "",                         //  User password   
  9.                           INTERNET_SERVICE_HTTP,      // Service   
  10.                           0,                          // Flags   
  11.                           0                           // Context   
  12.                          );  
  13. hReq = HttpOpenRequest(  
  14.                        hConnect,                          // InternetConnect handle   
  15.                        "GET",                      // Method   
  16.                        "",                         // Object name   
  17.                        HTTP_VERSION,               // Version   
  18.                        "",                         // Referrer   
  19.                        NULL,                       // Extra headers   
  20.                        INTERNET_FLAG_SECURE,       // Flags   
  21.                        0                           // Context   
  22.                       );  
  23. //...   



使用 HTTPS 而不是 HTTP 时,请注意两个差异:

* InternetConnect 使用 INTERNET_DEFAULT_HTTPS_PORT,而不是 INTERNET_INVALID_PORT_NUMBER 或 INTERNET_DEFAULT_HTTP_PORT 

* 除了所有其他的选项外,HttpOpenRequest 还使用 INTERNET_FLAG_SECURE 选项。 

在 HttpOpenRequest 中或在 InternetOpenUrl 中,可以使用以下两个选项以忽略无效的证书错误:

* INTERNET_FLAG_IGNORE_CERT_CN_INVALID:忽略因服务器的证书主机名与请求的主机名不匹配所导致的错误。

* INTERNET_FLAG_IGNORE_CERT_DATE_INVALID:忽略由已失效的服务器证书导致的错误。

有关这些标志的更多信息,请参阅 Internet Client SDK 文档。 

SSL 和 PCT 功能是由 Schannel.dll 提供的,它在您运行再发布程序 Wintdist.exe 或 Wint351.exe 时会正确安装。有关再发布 Schannel.dll 的信息,请参阅 Redist.txt 或 Axredist.txt。

转自:http://www.cnblogs.com/devcjq/articles/2912737.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值