VC使用HTTP下载文件步骤

VC使用HTTP下载文件方法
方法一:

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机器上面,当不打开异常的时候,是没有问题的。
但是只要打开异常开关,如下图:
VC使用HTTP下载文件步骤
就在Kernel32.dll出现异常。。

这搞死我了,有哪位大侠有原始socket下载http文件的代码啊。。。




------解决思路----------------------
HTTP也是走的TCP协议,也就是说,你如果用socket去解析也是没有问题的,重点是你要熟悉HTTP协议。

具体的操作方法和普通的TCP编程一样,只是一发一收需要自己包装HTTP协议。
如果开始不太清楚的话,可以装个wireshark,然后抓几个你访问的包看看。

至于你说道的:
引用:
其实问题是这样的,我请求了一个URL: 比如: http://www.bbc.com/abc,这个URL会返回字符串,我想获取这些返回的字符串,有什么办法?

直接循环recv,直到recv==0为止,只是你recv到的数据分为好几部分,一开始是http头,后面可能是一个html页面内容,也可能是你要下载的文件数据。你具体可以debug一下