3

我会直入主题。

  • 这是浏览器请求的样子

    获取 /index.html HTTP/1.1

  • 这就是 winHTTP 所做的

    获取http://site.com/index.html HTTP/1.1

有没有我可以让 winHTTP 请求与常规请求格式相同?如果有任何区别,我正在使用 VC++ 2008

4

1 回答 1

6

您的代码应如下所示:

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

// Create an HTTP request handle.
if (hConnect)
    hRequest = WinHttpOpenRequest( hConnect, L"GET", L"/path/resource.html",
                                   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);

您可以从您的代码中发布这三个调用吗?

请注意,完整的 URL 分为两部分 - 主机名在WinHttpConnect调用中指定,但相对资源路径在WinHttpOpenRequest调用中指定(作为pwszObjectName参数)。根据您的评论,您似乎在WinHttpConnect通话中指定了完整的 URL。

于 2010-03-29T01:54:30.480 回答