有的东西,明白了就不神秘了-使用 WinInet 进行 SSL 请求

[转:http://support.microsoft.com/kb/168151]
使用 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 文档。


看完后再看看你们收藏的HTTP访问源码,就很容易改成HTTPS了

posted @ 2012-05-08 18:39  stma  阅读(485)  评论(0)    收藏  举报