我终于使用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。
感谢任何帮助!
答案 0 :(得分:1)
<meta>
标记用于将客户端(通常是浏览器)重定向到另一个URL。您的代码没有响应,所以您看到的只是初始页面。
此:
<meta http-equiv="refresh" content="0;url=index.jsp">
告诉客户端在零秒延迟后应该获取页面“index.jsp”。您可能会看到如果从URL开始会发生什么
答案 1 :(得分:0)
立即重定向到index.jsp。