CHTTP 的 MSDN 的方法是最好的 下载文件方法吗。

xiaozi5230 2016-06-06 09:24:54
DWORD dwSize = 0;
DWORD dwDownloaded = 0;
LPSTR pszOutBuffer;
BOOL bResults = FALSE;
HINTERNET hSession = NULL,
hConnect = NULL,
hRequest = NULL;

// Use WinHttpOpen to obtain a session handle.
hSession = WinHttpOpen( L"WinHTTP Example/1.0",
WINHTTP_ACCESS_TYPE_DEFAULT_PROXY,
WINHTTP_NO_PROXY_NAME,
WINHTTP_NO_PROXY_BYPASS, 0);

// Specify an HTTP server.
if (hSession)
hConnect = WinHttpConnect( hSession, L"www.microsoft.com",
INTERNET_DEFAULT_HTTPS_PORT, 0);

// Create an HTTP request handle.
if (hConnect)
hRequest = WinHttpOpenRequest( hConnect, L"GET", NULL,
NULL, WINHTTP_NO_REFERER,
WINHTTP_DEFAULT_ACCEPT_TYPES,
WINHTTP_FLAG_SECURE);

// Send a request.
if (hRequest)
bResults = WinHttpSendRequest( hRequest,
WINHTTP_NO_ADDITIONAL_HEADERS,
0, WINHTTP_NO_REQUEST_DATA, 0,
0, 0);


// End the request.
if (bResults)
bResults = WinHttpReceiveResponse( hRequest, NULL);

// Continue to verify data until there is nothing left.
if (bResults)
do
{

// Verify available data.
dwSize = 0;
if (!WinHttpQueryDataAvailable( hRequest, &dwSize))
printf( "Error %u in WinHttpQueryDataAvailable.\n",
GetLastError());

// Allocate space for the buffer.
pszOutBuffer = new char[dwSize+1];
if (!pszOutBuffer)
{
printf("Out of memory\n");
dwSize=0;
}
else
{
// Read the Data.
ZeroMemory(pszOutBuffer, dwSize+1);

if (!WinHttpReadData( hRequest, (LPVOID)pszOutBuffer,
dwSize, &dwDownloaded))
printf( "Error %u in WinHttpReadData.\n", GetLastError());
else
printf( "%s\n", pszOutBuffer);

// Free the memory allocated to the buffer.
delete [] pszOutBuffer;
}

} while (dwSize > 0);


// Report any errors.
if (!bResults)
printf( "Error %d has occurred.\n", GetLastError());

// Close open handles.
if (hRequest) WinHttpCloseHandle(hRequest);
if (hConnect) WinHttpCloseHandle(hConnect);
if (hSession) WinHttpCloseHandle(hSession);

这是MSDN原文。

如果这个方式是最好的下载方式那就请高手解释下 WinHttpOpen() WinHttpConnect() WinHttpOpenRequest() WinHttpSendRequest() WinHttpReceiveResponse() WinHttpQueryDataAvailable() WinHttpReadData() 这些函数百度也查不到什么意思。求解。分数可以到时候多给你。谢谢。能详细解答最好了。
...全文
1493 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
oN5GrzoN 2016-08-01
  • 打赏
  • 举报
回复
引用 1 楼 SXJIAKE 的回复:
为什么要上百度去查?这种微软的资料必须到 Bing 或者 Google。国内你懂得,只能用 Bing 了。 https://msdn.microsoft.com/en-us/library/aa384257.aspx
虽然这些函数我也推荐直接看MSDN,但楼主的意思是找点国内使用的资料,如果用百度搜的话排名前几的,也有MSDN文档,所以不代表百度搜这个很差。
二进制程序猿 2016-07-22
  • 打赏
  • 举报
回复
用google查,不信查不到
邱嵩松 2016-07-18
  • 打赏
  • 举报
回复
同求 帮你顶一下
Jesse_Zhang370 2016-07-07
  • 打赏
  • 举报
回复
到 Bing 或者 Google查去
qq_35479030 2016-07-01
  • 打赏
  • 举报
回复
国内的都是假的查不到
qq_35479030 2016-07-01
  • 打赏
  • 举报
回复
到 Bing 或者 Google查去
「已注销」 2016-06-27
  • 打赏
  • 举报
回复
为什么要上百度去查?这种微软的资料必须到 Bing 或者 Google。国内你懂得,只能用 Bing 了。 https://msdn.microsoft.com/en-us/library/aa384257.aspx

1,736

社区成员

发帖
与我相关
我的任务
社区描述
网络协议与配置相关内容讨论专区
网络协议网络安全tcp/ip 技术论坛(原bbs)
社区管理员
  • 网络协议与配置社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧