使用 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://blog.csdn.net/jijihome/article/details/6303570


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM