C++ WinHttpQueryDataAvailable在下载数据时返回各种结果

C++ WinHttpQueryDataAvailable在下载数据时返回各种结果,c++,winapi,http,C++,Winapi,Http,我正试图从一个站点下载一个相当大的文件,并且每天都要下载几次。我正在使用带有WinHttpQueryDataAvailable(hRequest,&dwSize)和WinHttpReadData(hRequest,(LPVOID)pszOutBuffer,dwSize,&dwdownload)的循环来连续读取文件的数据,直到文件完全下载,这是在dwSize==0时确定的。但是,有时我在下载文件时会收到错误代码,特别是12030和12002(错误\u WINHTTP\u连接错误和错误\u WINH

我正试图从一个站点下载一个相当大的文件,并且每天都要下载几次。我正在使用带有
WinHttpQueryDataAvailable(hRequest,&dwSize)
WinHttpReadData(hRequest,(LPVOID)pszOutBuffer,dwSize,&dwdownload)
的循环来连续读取文件的数据,直到文件完全下载,这是在dwSize==0时确定的。但是,有时我在下载文件时会收到错误代码,特别是12030和12002(错误\u WINHTTP\u连接错误和错误\u WINHTTP\u超时)

为代码添加弹性的最佳方法是什么?我是否应该尝试重新连接并从中断的地方重新开始?如果是这样,如何使用WinHTTP函数实现这一点?超时时间已经相当长了;超时错误实际上也可能是连接错误吗


任何建议都将不胜感激

是否重试完全取决于您和您的程序。WinINet确实支持部分下载,但我记不起这些选项了。查看MSDN中的列表应该会给您一个提示。我对HTTP不太熟悉,因此我不确定应该从工作流中的什么位置重新开始,也不确定如何指定总大小为y的文件的x字节(也不知道如何处理y已更改的情况)。我花了相当多的时间在谷歌上搜索这个问题,阅读MSDN的文章;WinHttpQueryDataAvailable的一个似乎是一个明显的选择,但对这个问题没有帮助。另一个选项可能是带有的备份文件。