• HTTP下载文件


    bool CWinpcapGetURL::DownLoadWBList(LPCSTR ServerName, LPCSTR lpObject, int nPort)//下载黑白名单
    {
        HINTERNET hSession = NULL;
        HINTERNET hConnect = NULL;
        
        DWORD dwBytesRead = 0;
        char * pBuffer;
        FILE* hWDListFile;
        HINTERNET hRequest=NULL;
        
        hSession = InternetOpen("HttpSendRequest",INTERNET_OPEN_TYPE_DIRECT,NULL,NULL,0);
        if(!hSession){
            goto quit;
        }
        
        hConnect = InternetConnect(hSession, ServerName, nPort, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 1);
        if(!hConnect)
        {
            goto quit;
        }
        
        hRequest = HttpOpenRequest (hConnect, "GET", lpObject, NULL, NULL, NULL, INTERNET_FLAG_NO_CACHE_WRITE, 0);
        if (!hRequest)
        {
            goto quit;
        }
        
        {        
            BOOL bSendRequest = ::HttpSendRequest(hRequest,   NULL,   0,   0,   0);   
            
            //Get the length of the file.   
            char bufQuery[32];   
            DWORD dwLengthBufQuery = sizeof(bufQuery);   
            BOOL bQuery = ::HttpQueryInfo(hRequest,   HTTP_QUERY_CONTENT_LENGTH,bufQuery,&dwLengthBufQuery,NULL);         
            DWORD dwFileSize = (DWORD)atol(bufQuery);   
            
            pBuffer = new char[dwFileSize+1]; 
            if(!InternetReadFile(hRequest, pBuffer, dwFileSize+1, &dwBytesRead))
            {
                goto quit;
            }
            if( dwBytesRead == 0)
                goto quit;
            
            pBuffer[dwBytesRead] = 0;
            string s_WDListFile = CGlobalTools::g_szCurrentDirectory;
            s_WDListFile.append("WBListCache.bak");
            hWDListFile = fopen(s_WDListFile.c_str(),"w+");
            
            DWORD dWriteSize = fwrite(pBuffer,1,dwBytesRead,hWDListFile);
        }
        
    quit:
        if(hSession)
            InternetCloseHandle(hSession);
        if(hRequest)
            InternetCloseHandle(hRequest);
        if (hConnect)
            InternetCloseHandle(hConnect);    
        if (hWDListFile != NULL )
            fclose(hWDListFile);    
        if (pBuffer)
        {
            delete[] pBuffer;
            pBuffer = NULL;
        }
        return true;
    }
  • 相关阅读:
    分类、回归问题Loss
    eclipse导入原代码打包war包的方法
    linux安装java,tomcat,mysql
    将代码部署到tomcat的方式
    记一次电脑密码重置恢复的过程win11
    java内部类与静态内部类
    Ribbon 实现客户端负载均衡与LoadBalanced注解
    公式选股 基本定义和函数, 常用例子
    How To: Use C Macros Efficiently in Your Code
    ASP.NET 将DataTable解析成JSON
  • 原文地址:https://www.cnblogs.com/tangtianfly/p/2499367.html
Copyright © 2020-2023  润新知