【问题标题】:Missing HTML code/tags when downloading page with C++使用 C++ 下载页面时缺少 HTML 代码/标签
【发布时间】:2011-11-12 13:56:38
【问题描述】:

我终于成功地使用 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。

感谢任何帮助!

【问题讨论】:

    标签: javascript c++ html wininet


    【解决方案1】:

    &lt;meta&gt; 标记旨在将客户端(通常是浏览器)重定向到另一个 URL。您的代码没有对此做出响应,因此您看到的只是初始页面。

    这个:

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

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

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

    【讨论】:

    • 很好,我也得到了与 www.rottentomatoes.com 相同的“网页”。但是现在,当尝试下载该页面时,我什么也没得到。怎么会?任何解决方案,建议?
    • 执行此操作时出现 403 错误。我建议在开发自己的软件时尝试使用 curl 或 wget 等工具。
    • 对我来说很好用: hRequest = HttpOpenRequest( hConnect, L"GET", L"/index.jsp", L"HTTP/1.1", NULL, NULL, INTERNET_FLAG_RELOAD | INTERNET_FLAG_EXISTING_CONNECT, 0) ;
    • 能否请您指出如何在我的代码中插入此语句?谢谢。
    【解决方案2】:

    立即重定向到 index.jsp。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-30
      • 1970-01-01
      • 2023-03-23
      • 2021-08-14
      • 2015-10-12
      • 2023-01-22
      • 1970-01-01
      相关资源
      最近更新 更多