使用 WinInet API 可以建立安全套接字层 (SSL) 或专用通信技术 (PCT) HTTP 会话。安全 HTTP(表示为 HTTPS://)在 TCP 端口 443 上发生。可以使用类似于下面这样的代码来建立 HTTPS 会话:
- //...
- hOpen = InternetOpen(...);
- Connect = InternetConnect(
- hOpen, // InternetOpen handle
- "MyHttpServer", // Server name
- INTERNET_DEFAULT_HTTPS_PORT,// Default HTTPS port - 443
- "", // User name
- "", // User password
- INTERNET_SERVICE_HTTP, // Service
- 0, // Flags
- 0 // Context
- );
- hReq = HttpOpenRequest(
- hConnect, // InternetConnect handle
- "GET", // Method
- "", // Object name
- HTTP_VERSION, // Version
- "", // Referrer
- NULL, // Extra headers
- INTERNET_FLAG_SECURE, // Flags
- 0 // Context
- );
- //...
使用 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