我用下载工具得到的sniffer 信息是:
1:GET /tools/xxx.zip HTTP/1.1
2:Accept: */*
3:Cache-Control: no-cache
4:Connection: Close
5:Host: www.xxx.com
6:Pragma: no-cache
7:Range: byte=38793-
8:Referer:http://www.xxx.com/tools/
9:User-Agent: Mozila/4.0而我自己做的下载程序却是:
1:GET /tools/xxx.zip HTTP/1.1
2:Content:(200 bytes of data)而诸如Accept: */*等信息都在2:Content中。
请问这是什么原因?谢谢!!!大致代码如下:
hConnect = InternetConnect(hOpen,"www.xxx.com",INTERNET_DEFAULT_HTTP_PORT,
NULL,NULL,INTERNET_SERVICE_HTTP,0,0);
LPCTSTR AcceptTypes = "*/*";
hRequest = HttpOpenRequest(hConnect,"GET","/tools/xxx.zip","HTTP/1.1",NULL,&AcceptTypes, INTERNET_FLAG_NO_CACHE_WRITE|INTERNET_FLAG_PRAGMA_NOCACHE|INTERNET_FLAG_RELOAD,0);
HttpSendRequest(hRequest,NULL,0,NULL,0);
1:GET /tools/xxx.zip HTTP/1.1
2:Accept: */*
3:Cache-Control: no-cache
4:Connection: Close
5:Host: www.xxx.com
6:Pragma: no-cache
7:Range: byte=38793-
8:Referer:http://www.xxx.com/tools/
9:User-Agent: Mozila/4.0而我自己做的下载程序却是:
1:GET /tools/xxx.zip HTTP/1.1
2:Content:(200 bytes of data)而诸如Accept: */*等信息都在2:Content中。
请问这是什么原因?谢谢!!!大致代码如下:
hConnect = InternetConnect(hOpen,"www.xxx.com",INTERNET_DEFAULT_HTTP_PORT,
NULL,NULL,INTERNET_SERVICE_HTTP,0,0);
LPCTSTR AcceptTypes = "*/*";
hRequest = HttpOpenRequest(hConnect,"GET","/tools/xxx.zip","HTTP/1.1",NULL,&AcceptTypes, INTERNET_FLAG_NO_CACHE_WRITE|INTERNET_FLAG_PRAGMA_NOCACHE|INTERNET_FLAG_RELOAD,0);
HttpSendRequest(hRequest,NULL,0,NULL,0);
你需要使用HttpAddRequestHeaders把相应的http头添加进去,然后再HttpSendRequest发送!
{
DWORD dwFlags;
InternetGetConnectedState(&dwFlags, 0);
//1.建立会话
if(!(dwFlags & INTERNET_CONNECTION_PROXY))
hOpen = InternetOpen("HttpDownload", INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY, NULL, NULL, 0);
else
hOpen = InternetOpen("HttpDownload", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
if(!hOpen)
{
AfxMessageBox("Internet连接错误!");
return -1;
}
//2.建立连接
CString hostName,fileName;
ParseURL(hostName,fileName);
hConnect = InternetConnect(hOpen,hostName,INTERNET_DEFAULT_HTTP_PORT,
NULL,NULL,INTERNET_SERVICE_HTTP,0,0);
// 3.初始化下载请求
LPCTSTR AcceptTypes = "*/*\0";
hRequest = HttpOpenRequest(hConnect,"GET",fileName,"HTTP/1.1",NULL ,&AcceptTypes, INTERNET_FLAG_NO_CACHE_WRITE|INTERNET_FLAG_PRAGMA_NOCACHE|INTERNET_FLAG_RELOAD,0);
// 4.发送下载请求
BOOL ret = HttpSendRequest(hRequest,NULL,0,NULL,0);
if (!ret)
{
CString strErr;
int i = GetLastError();
strErr.Format("HttpSendRequest error: %d",i);
AfxMessageBox(strErr);
} return 0;
}// 从URL中提取主机名称和下载文件路径
void CHttpDownloader::ParseURL(CString& hostName,CString& fileName)
{
CString URL = url;
int i=URL.Find("http://");
if(i != -1)
{
URL = URL.Mid(7);
}
i=URL.Find("/");
hostName = URL.Mid(0, i);
fileName = URL.Mid(i);
}