-1

我正在尝试wininet.h在 Visual Studio 2010 Express 中使用 C++ 和工具加载 HTML 代码。要创建 URL 字符串,我编写以下内容:

HINTERNET hConnect =::InternetConnect(
    hInternet, 
    _T("stackoverflow.com"), 
    INTERNET_DEFAULT_HTTP_PORT, 
    NULL, 
    NULL, 
    IINTERNET_SERVICE_HTTP, 
    0, 
    1u
);

当 URL 只是一个没有路径或协议的域时,该程序运行良好,但是当我将 URL 从 更改为 时stackoverflow.comhttp://stackoverflow.com/questions突然我的代码不再工作了。

HttpSendRequest(hRequest, NULL, 0, NULL, 0)只是返回假。

我已经在我的参数上尝试了许多不同的变化,并搜索了谷歌,但我只是卡住了。谁能提供一些见解?

4

1 回答 1

1

文档InternetConnect告诉我,它用于建立与服务器的 FTP 或 HTTP 连接 - 而不是下载 URL 。

因此,该lpszServerName参数记录为:

指向以空字符结尾的字符串的指针,该字符串指定 Internet 服务器的主机名。或者,该字符串可以包含站点的 IP 号,采用 ASCII 点分十进制格式(例如,11.0.1.45)。

因此,您必须使用服务器的主机名或 IP 地址,而不能使用 URL,因此当您这样做时它不起作用。

/questions您的 URL ( )的路径部分应用作您使用调用返回的调用 ( docs )的lpszObjectName参数。HttpOpenRequesthConnectInternetConnect

于 2012-11-29T18:55:44.937 回答