InternetReadFile
一个文本文件后缀名是.txt就可以读过来,但是改成.tx1就不能,
而且改成tx1传的居然是一个"无法找到该页"的源文件
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<HTML><HEAD><TITLE>无法找到该页</TITLE>
<META HTTP-EQUIV="Content-Type" Content="text/html; charset=GB2312">
<STYLE type="text/css">
BODY { font: 9pt/12pt 宋体 }
H1 { font: 12pt/15pt 宋体 }
H2 { font: 9pt/12pt 宋体 }
A:link { color: red }
A:visited { color: maroon }
</STYLE>
</HEAD><BODY><TABLE width=500 border=0 cellspacing=10><TR><TD><h1>无法找到该页</h1>
您正在搜索的页面可能已经删除、更名或暂时不可用。
<hr>
<p>请尝试以下操作:</p>
<ul>
<li>确保浏览器的地址栏中显示的网站地址的拼写和格式正确无误。</li>
<li>如果通过单击链接而到达了该网页,请与网站管理员联系,通知他们该链接的格式不正确。
</li>
<li>单击<a href="javascript:history.back(1)">后退</a>按钮尝试另一个链接。</li>
</ul>
<h2>HTTP 错误 404 - 文件或目录未找到。<br>Internet 信息服务 (IIS)</h2>
<hr>
<p>技术信息(为技术支持人员提供)</p>
<ul>
<li>转到 <a href="http://go.microsoft.com/fwlink/?linkid=8180">Microsoft 产品支持服务</a>并搜索包括“HTTP”和“404”的标题。</li>
<li>打开“IIS 帮助”(可在 IIS 管理器 (inetmgr) 中访问),然后搜索标题为“网站设置”、“常规管理任务”和“关于自定义错误消息”的主题。</li>
</ul></TD></TR></TABLE></BODY></HTML>
vc源码如下
HINTERNET hinternet = 0;
hinternet = ::InternetOpen("Microsoft Internet Explorer",
INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
if (hinternet == 0)
{
TRACE("ddddd\r\n");
}
HINTERNET hInternetFile;
hInternetFile = ::InternetOpenUrl(hinternet,
"http://127.0.0.1/MyActiveX/txt.tx1",
NULL, 0,
//INTERNET_FLAG_RELOAD 强制重读数据
//INTERNET_FLAG_DONT_CACHE 不保存到缓存
//INTERNET_FLAG_TRANSFER_ASCII 使用文本数据
//INTERNET_FLAG_TRANSFER_BINARY 使用二进制数据
INTERNET_FLAG_RELOAD,
//INTERNET_FLAG_TRANSFER_BINARY | INTERNET_FLAG_RELOAD,// | INTERNET_FLAG_DONT_CACHE,
0); int iiii = 0;
DWORD dddd = 0;
::HttpQueryInfo(hInternetFile,
HTTP_QUERY_CONTENT_LENGTH | HTTP_QUERY_FLAG_NUMBER, &iiii, &dddd, 0); if (!hInternetFile)
{
TRACE("dddd1d\r\n");
}
FILE * f=fopen("c:\\txt.tx1","w+b");
if(f==NULL)
{
InternetCloseHandle(hinternet);
return 0;
}
char * f_tmp=(char *)malloc(1024);
memset(f_tmp,0,1024);
DWORD dwread=0;
while(InternetReadFile(hInternetFile,(LPVOID)f_tmp,1023, &dwread))
{
if(!dwread)break;
fwrite(f_tmp,sizeof(char),dwread,f);
memset(f_tmp,0,1024);
}
fclose(f);
free(f_tmp);
InternetCloseHandle(hinternet);
return 0;
也就是用IE写http://...去浏览,正常的话才能下载,如果出现“无法找到该页”则返回“无法找到该页”的源文件。
这是为什么?
一个文本文件后缀名是.txt就可以读过来,但是改成.tx1就不能,
而且改成tx1传的居然是一个"无法找到该页"的源文件
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<HTML><HEAD><TITLE>无法找到该页</TITLE>
<META HTTP-EQUIV="Content-Type" Content="text/html; charset=GB2312">
<STYLE type="text/css">
BODY { font: 9pt/12pt 宋体 }
H1 { font: 12pt/15pt 宋体 }
H2 { font: 9pt/12pt 宋体 }
A:link { color: red }
A:visited { color: maroon }
</STYLE>
</HEAD><BODY><TABLE width=500 border=0 cellspacing=10><TR><TD><h1>无法找到该页</h1>
您正在搜索的页面可能已经删除、更名或暂时不可用。
<hr>
<p>请尝试以下操作:</p>
<ul>
<li>确保浏览器的地址栏中显示的网站地址的拼写和格式正确无误。</li>
<li>如果通过单击链接而到达了该网页,请与网站管理员联系,通知他们该链接的格式不正确。
</li>
<li>单击<a href="javascript:history.back(1)">后退</a>按钮尝试另一个链接。</li>
</ul>
<h2>HTTP 错误 404 - 文件或目录未找到。<br>Internet 信息服务 (IIS)</h2>
<hr>
<p>技术信息(为技术支持人员提供)</p>
<ul>
<li>转到 <a href="http://go.microsoft.com/fwlink/?linkid=8180">Microsoft 产品支持服务</a>并搜索包括“HTTP”和“404”的标题。</li>
<li>打开“IIS 帮助”(可在 IIS 管理器 (inetmgr) 中访问),然后搜索标题为“网站设置”、“常规管理任务”和“关于自定义错误消息”的主题。</li>
</ul></TD></TR></TABLE></BODY></HTML>
vc源码如下
HINTERNET hinternet = 0;
hinternet = ::InternetOpen("Microsoft Internet Explorer",
INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
if (hinternet == 0)
{
TRACE("ddddd\r\n");
}
HINTERNET hInternetFile;
hInternetFile = ::InternetOpenUrl(hinternet,
"http://127.0.0.1/MyActiveX/txt.tx1",
NULL, 0,
//INTERNET_FLAG_RELOAD 强制重读数据
//INTERNET_FLAG_DONT_CACHE 不保存到缓存
//INTERNET_FLAG_TRANSFER_ASCII 使用文本数据
//INTERNET_FLAG_TRANSFER_BINARY 使用二进制数据
INTERNET_FLAG_RELOAD,
//INTERNET_FLAG_TRANSFER_BINARY | INTERNET_FLAG_RELOAD,// | INTERNET_FLAG_DONT_CACHE,
0); int iiii = 0;
DWORD dddd = 0;
::HttpQueryInfo(hInternetFile,
HTTP_QUERY_CONTENT_LENGTH | HTTP_QUERY_FLAG_NUMBER, &iiii, &dddd, 0); if (!hInternetFile)
{
TRACE("dddd1d\r\n");
}
FILE * f=fopen("c:\\txt.tx1","w+b");
if(f==NULL)
{
InternetCloseHandle(hinternet);
return 0;
}
char * f_tmp=(char *)malloc(1024);
memset(f_tmp,0,1024);
DWORD dwread=0;
while(InternetReadFile(hInternetFile,(LPVOID)f_tmp,1023, &dwread))
{
if(!dwread)break;
fwrite(f_tmp,sizeof(char),dwread,f);
memset(f_tmp,0,1024);
}
fclose(f);
free(f_tmp);
InternetCloseHandle(hinternet);
return 0;
也就是用IE写http://...去浏览,正常的话才能下载,如果出现“无法找到该页”则返回“无法找到该页”的源文件。
这是为什么?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货