我就开门见山吧。

  • 这就是浏览器请求的样子

    获取 /index.html HTTP/1.1

  • 这就是 winHTTP 的作用

    得到 http://site.com/index.html HTTP/1.1

有什么办法可以使 winHTTP 请求的格式与常规请求的格式相同吗?我正在使用 VC++ 2008 如果有什么区别的话

有帮助吗?

解决方案

您的代码应如下所示:

// 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 范围)。根据您的评论,您似乎在指定完整的 URL WinHttpConnect 称呼。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top