1. 創建ActiveX 插件工程 1)創建CHttpConnection和CHttpFile之前對Url進行解析,判斷服務類型 [cpp] AfxParseURL(strServerPath, dwServiceType, strServerName, strObjectName, nPort); AfxParseURL(strServerPath, dwServiceType, strServerName, strObjectName, nPort);除了第一個參數,其它均為出口參數,dwServiceType可獲得服務類型。 2)創建CInternetSession、CHttpConnection、和打開請求獲得CHttpFile。 判斷服務類型是否為Https,如果是則需設置新的標記。 [cpp] DWORD dwFlags = INTERNET_FLAG_DONT_CACHE; if (AFX_INET_SERVICE_HTTPS == dwServiceType) { dwFlags = INTERNET_FLAG_SECURE | INTERNET_FLAG_EXISTING_CONNECT | INTERNET_FLAG_RELOAD | INTERNET_FLAG_NO_CACHE_WRITE | INTERNET_FLAG_IGNORE_CERT_DATE_INVALID | INTERNET_FLAG_IGNORE_CERT_CN_INVALID; } CInternetSession mySession; CHttpConnection *pHttpConnection = mySession.GetHttpConnection(strServerName, nPort); CHttpFile *pHttpFile = pHttpConnection->OpenRequest(CHttpConnection::HTTP_VERB_PUT, strObjectName, NULL, 1, NULL, NULL, dwFlags); DWORD dwFlags = INTERNET_FLAG_DONT_CACHE; if (AFX_INET_SERVICE_HTTPS == dwServiceType) { dwFlags = INTERNET_FLAG_SECURE | INTERNET_FLAG_EXISTING_CONNECT | INTERNET_FLAG_RELOAD | INTERNET_FLAG_NO_CACHE_WRITE | INTERNET_FLAG_IGNORE_CERT_DATE_INVALID | INTERNET_FLAG_IGNORE_CERT_CN_INVALID; } CInternetSession mySession; CHttpConnection *pHttpConnection = mySession.GetHttpConnection(strServerName, nPort); CHttpFile *pHttpFile = pHttpConnection->OpenRequest(CHttpConnection::HTTP_VERB_PUT, strObjectName, NULL, 1, NULL, NULL, dwFlags);獲取服務如果服務類型為AFX_INET_SERVICE_HTTPS,則需先獲取服務器選項,然後設置標記並設置Web服務器選項。 [cpp] if (AFX_INET_SERVICE_HTTPS == dwServiceType) { // ignore the certificate pHttpFile->QueryOption(INTERNET_OPTION_SECURITY_FLAGS, dwFlags); dwFlags |= (SECURITY_FLAG_IGNORE_CERT_CN_INVALID | SECURITY_FLAG_IGNORE_CERT_DATE_INVALID | SECURITY_FLAG_IGNORE_UNKNOWN_CA | SECURITY_FLAG_IGNORE_WRONG_USAGE | SECURITY_FLAG_IGNORE_REVOCATION); // set web server option pHttpFile->SetOption(INTERNET_OPTION_SECURITY_FLAGS, dwFlags); if (UseHttpsSendReqEx(pHttpFile, dwPostSize, strLocalFile)) { // 該函數向Https服務器發送本地文件strLocalFile,使用CHTTPFile::SendRequestEx()函數 } } if (AFX_INET_SERVICE_HTTPS == dwServiceType) {www.2cto.com // ignore the certificate pHttpFile->QueryOption(INTERNET_OPTION_SECURITY_FLAGS, dwFlags); dwFlags |= (SECURITY_FLAG_IGNORE_CERT_CN_INVALID | SECURITY_FLAG_IGNORE_CERT_DATE_INVALID | SECURITY_FLAG_IGNORE_UNKNOWN_CA | SECURITY_FLAG_IGNORE_WRONG_USAGE | SECURITY_FLAG_IGNORE_REVOCATION); // set web server option pHttpFile->SetOption(INTERNET_OPTION_SECURITY_FLAGS, dwFlags); if (UseHttpsSendReqEx(pHttpFile, dwPostSize, strLocalFile)) { // 該函數向Https服務器發送本地文件strLocalFile,使用CHTTPFile::SendRequestEx()函數 } }