使用C ++下载页面时缺少HTML代码/标记

时间:2011-11-12 13:56:39

标签: javascript c++ html wininet

我终于使用wininet库成功将网页下载到磁盘。我目前正在使用以下c ++代码:

    #include <windows.h>
    #include <wininet.h>
    #include <stdio.h>
    #include <fstream>
    #include <cstring>

    #define SIZE 128


    int main(int argc, char ** argv)

    {

    HINTERNET Initialize,Connection,File;
    DWORD dwBytes;

    char ch;
    Initialize = InternetOpen("HTTPGET",INTERNET_OPEN_TYPE_DIRECT,NULL,NULL,0);

    Connection = InternetConnect(Initialize,argv[1],INTERNET_DEFAULT_HTTP_PORT,
    NULL,NULL,INTERNET_SERVICE_HTTP,0,0);


    File = HttpOpenRequest(Connection,NULL,"/index.html",NULL,NULL,NULL,0,0);
    if(HttpSendRequest(File,NULL,0,NULL,0))
    {
        std::ofstream webSource;
        webSource.open(strcat(argv[1], "__.html"));
        while(InternetReadFile(File,&ch,1,&dwBytes))
        {
            if(dwBytes != 1)break;
            webSource << ch;
        }
        webSource.close();
    }

    InternetCloseHandle(File);
    InternetCloseHandle(Connection);
    InternetCloseHandle(Initialize);

    return 0;
}

但是当我选择下载www.rottentomatoes.com时,这是我唯一得到的东西

<HEAD><TITLE>Flixster</TITLE>

<META http-equiv=Content-Type content="text/html; charset=ISO-8859-1">

<meta http-equiv="refresh" content="0;url=index.jsp">

<!--

<meta http-equiv="refresh" content="0;url=maintenance.html">

-->

</HEAD>



<BODY>

</body>

</html>

这里有什么问题?我应该得到文本,链接,图像框架和大约150KB的HTML。

感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

<meta>标记用于将客户端(通常是浏览器)重定向到另一个URL。您的代码没有响应,所以您看到的只是初始页面。

此:

<meta http-equiv="refresh" content="0;url=index.jsp">

告诉客户端在零秒延迟后应该获取页面“index.jsp”。您可能会看到如果从URL开始会发生什么

  

http://www.rottentomatoes.com/index.jsp

答案 1 :(得分:0)

立即重定向到index.jsp。