以前,研究了一段时间的openssl,于是使用openssl实现了https站点的访问。后来发现,其实使用windows API也可以实现https站点的访问。关键就是设置一些标识符。关键代码如下:
m_hSession = InternetOpen(
_T("Microsoft Internet Explorer"),
INTERNET_OPEN_TYPE_PRECONFIG,
NULL,
NULL,
0
);
m_hConnection = InternetConnect(
m_hSession,
lpHostName,//指定要连接的主机
INTERNET_DEFAULT_HTTPS_PORT,//指定https端口,默认端口为443
NULL,
NULL,
INTERNET_SERVICE_HTTP,
0,
0
);
dwHttpOpenRequestFlags =
//flags common to open functions
INTERNET_FLAG_RELOAD |
//flags
//INTERNET_FLAG_ASYNC |
//additional cache flags
//INTERNET_FLAG_DONT_CACHE |
//additional flags
INTERNET_FLAG_SECURE |//启用ssl模式
INTERNET_FLAG_KEEP_CONNECTION |
INTERNET_FLAG_NO_AUTO_REDIRECT |
INTERNET_FLAG_READ_PREFETCH |
INTERNET_FLAG_NO_COOKIES |
INTERNET_FLAG_NO_AUTH |
INTERNET_FLAG_RESTRICTED_ZONE |
INTERNET_FLAG_CACHE_IF_NET_FAIL |
//ssl ignore flags
INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP |//忽略ssl模式下的https->http跳转
INTERNET_FLAG_IGNORE_CERT_CN_INVALID |//忽略ssl模式下的证书名称错误
//more cache flags
INTERNET_FLAG_NO_UI |
0;
m_hRequest = HttpOpenRequest(
m_hConnection,
_T("GET"),//指定动作,GET或者POST
reqObj,//指定要请求的uri
HTTP_VERSION,
NULL,
NULL,
dwHttpOpenRequestFlags,
0
);
在使用了上述配置之后,就跟http站点一样操作就可以了。