VC使用HTTP下载文件步骤
VC使用HTTP下载文件方法
方法一:
方法二:
这2个方法在我的Win7机器上面,当不打开异常的时候,是没有问题的。
但是只要打开异常开关,如下图:

就在Kernel32.dll出现异常。。
这搞死我了,有哪位大侠有原始socket下载http文件的代码啊。。。
------解决思路----------------------
HTTP也是走的TCP协议,也就是说,你如果用socket去解析也是没有问题的,重点是你要熟悉HTTP协议。
具体的操作方法和普通的TCP编程一样,只是一发一收需要自己包装HTTP协议。
如果开始不太清楚的话,可以装个wireshark,然后抓几个你访问的包看看。
至于你说道的:
直接循环recv,直到recv==0为止,只是你recv到的数据分为好几部分,一开始是http头,后面可能是一个html页面内容,也可能是你要下载的文件数据。你具体可以debug一下
方法一:
TCHAR szUrl[] = _T("");
HINTERNET hInternet1 = InternetOpen(NULL, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, NULL);
if( NULL == hInternet1 ) {
InternetCloseHandle(hInternet1);
return FALSE;
}
HINTERNET hInternet2 = InternetOpenUrl(hInternet1, lpszUrl, NULL, NULL, INTERNET_FLAG_NO_CACHE_WRITE, NULL);
if( NULL == hInternet2 ) {
InternetCloseHandle(hInternet2);
InternetCloseHandle(hInternet1);
return FALSE;
}
方法二:
HRESULT h1 = URLDownloadToFile(NULL, strUrl.GetBuffer(0), strDstFile.GetBuffer(0), 0, &bcb);
这2个方法在我的Win7机器上面,当不打开异常的时候,是没有问题的。
但是只要打开异常开关,如下图:
就在Kernel32.dll出现异常。。
这搞死我了,有哪位大侠有原始socket下载http文件的代码啊。。。
------解决思路----------------------
HTTP也是走的TCP协议,也就是说,你如果用socket去解析也是没有问题的,重点是你要熟悉HTTP协议。
具体的操作方法和普通的TCP编程一样,只是一发一收需要自己包装HTTP协议。
如果开始不太清楚的话,可以装个wireshark,然后抓几个你访问的包看看。
至于你说道的:
直接循环recv,直到recv==0为止,只是你recv到的数据分为好几部分,一开始是http头,后面可能是一个html页面内容,也可能是你要下载的文件数据。你具体可以debug一下