使用 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。