在<wininet.h> API </wininet.h>中帮助InternetOpenUrl和InternetReadFile

时间:2010-08-04 15:31:52

标签: .net c++ mfc wininet

我试图使用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 个答案:

答案 0 :(得分: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;
}