4

I'll get right to the point.

  • This is what a browser request looks like

    GET /index.html HTTP/1.1

  • This is what winHTTP does

    GET http://site.com/index.html HTTP/1.1

Is there any I can get the winHTTP request to be the same format as the regular one? I'm using VC++ 2008 if it makes any difference

Ilia Choly
  • 18,070
  • 14
  • 92
  • 160
  • I don't know the answer, but I am curious as to why you wish this? – SteelBytes Mar 25 '10 at 01:25
  • Since you should send Host: site.com in a separate line and only send path in the GET? Actually after reading the RFC it say if site stated in the GET URI Host: should be ignored. – jpyllman Mar 25 '10 at 02:54
  • atm my code is a c/p from msdn http://msdn.microsoft.com/en-us/library/aa384270%28VS.85%29.aspx I already tried setting the url to /index.html and then manually setting the Host: header but it didn't work. – Ilia Choly Mar 25 '10 at 04:43
  • Maybe you have some non-transparent proxy configured on the machine (either local like Fiddler or corporate) - in that case, the request *will* have the full uri – Jonathan Jul 11 '18 at 08:14

1 Answers1

7

Your code should look like this:

// 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);

Can you post these three calls from your code?

Note that the full URL is split in two - the host name is specified in the WinHttpConnect call, but the relative resource path is specified in the WinHttpOpenRequest call (as the pwszObjectName parameter). Based on your comment, it seems you are specifying the full URL in the WinHttpConnect call.

Franci Penov
  • 74,861
  • 18
  • 132
  • 169