<WinInet.h> API 中的 InternetOpenUrl 和 InternetReadFile 帮助
Posted
技术标签:
【中文标题】<WinInet.h> API 中的 InternetOpenUrl 和 InternetReadFile 帮助【英文标题】:Help with InternetOpenUrl and InternetReadFile in <WinInet.h> API 【发布时间】:2010-08-04 15:31:51 【问题描述】:我正在尝试使用 WinInet API 简单地访问页面。一旦我访问它,我希望能够将内容读入字符串。我已经初始化了根节点。到目前为止,这是我得到的:
HINTERNET hChildURL = InternetOpenUrl(hInternetRoot,
LPCTSTR(CString("http://www.google.com/")),
NULL,
0,
0,
0);
在此之后,我知道您必须使用 InternetReadFile 来实际提取数据。有人可以提供一个详细的例子来说明如何做到这一点。我对 C 风格的文件函数和缓冲区的使用不是特别熟悉,所以请放轻松。
另一方面,我应该使用不同的或更现代的 Windows API 来代替吗?从长远来看,我被分配开发一个应用程序,该应用程序将充当客户端并使用 HTTP 和 HTTPS 与远程服务器一起发送/接收数据。我走在正确的道路上吗?
编辑:更具体的要求:它必须用 C++ 编写,必须与 Win XP 及更高版本兼容,并且必须仅使用标准 Windows 库。除此之外,我可以随心所欲。
【问题讨论】:
【参考方案1】:好吧,你只是一次读一大块:
HINTERNET Request = InternetOpenUrl(...);
if(Request != NULL)
BYTE Buffer[8192];
DWORD BytesRead;
while(InternetReadFile(Request, Buffer, 8192, &BytesRead) && BytesRead != 0)
// do something with Buffer
InternetCloseHandle(Request);
Request = NULL;
【讨论】:
w00t 谢谢,我不习惯所有这些低级文件阅读杂音。我被 Python 和 Java 宠坏了。以上是关于<WinInet.h> API 中的 InternetOpenUrl 和 InternetReadFile 帮助的主要内容,如果未能解决你的问题,请参考以下文章