WIN32 API - http编程

来源:互联网 发布:js渐变效果 编辑:程序博客网 时间:2024/05/21 14:00

1. 一般的步骤是,首先通过InternetOpen()函数创建位于根部的HINTERNET句柄,然后才能进一步建立HTTP、FTP会话,使用InternetConnect()函数创建一个指定的会话,初始化HTTP、FTP会话(根据指定的参数决定),并创建一个根句柄的分支,HttpOpenRequest()、FtpOpenFile()、FtpFindFirstFile()等函数将使用InternetConnect()所创建的句柄,建立到指定站点的连接。例子代码如下:

bool testHttpDownload()

{

    // 建立会话

    HINTERNET hInternet;

    hInternet = InternetOpen("", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);

    if(hInternet == NULL)  return false;

    // 建立连接

    HINTERNET hConnect;

    hConnect = InternetConnect(hInternet, "hi.baidu.com", INTERNET_INVALID_PORT_NUMBER,

       "", "", INTERNET_SERVICE_HTTP, INTERNET_FLAG_PASSIVE, 0);

    if( hInternet == NULL )

    {

       InternetCloseHandle(hInternet); 

       return false; 

     }

     HINTERNET httpFile;

     httpFile = HttpOpenRequest(hConnect, "GET", "vc_net/blog/item/2d830208fe388bc063d986b2.html", HTTP_VERSION, NULL, 0,        INTERNET_FLAG_NO_UI | INTERNET_FLAG_DONT_CACHE, 1);

    if(httpFile == NULL)

   {   

        InternetCloseHandle(hConnect); 

        InternetCloseHandle(hInternet); 

        return false;

    }

    HttpSendRequest(httpFile, NULL, NULL, 0, 0);

    char buf[1024];

    DWORD buf_len = 1024;

    DWORD buf_read = 1024;

    FILE *fp = fopen("e:\\test.txt", "wb");

    while(1)

    {

       InternetReadFile(httpFile, buf, buf_len, &buf_read);

       if(buf_read == 0) break;

       fwrite(buf, 1, buf_read, fp);

    }

    fclose(fp);

 

    InternetCloseHandle(httpFile);

    InternetCloseHandle(hConnect);

    InternetCloseHandle(hInternet);

    return true;

}


0 0
原创粉丝点击