2010-03-25 31 views
2

Je vais aller droit au but.winHTTP GET demande C++

  • C'est ce que la demande de navigateur ressemble

    GET /index.html HTTP/1.1

  • C'est ce que winhttp ne

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

Y at-il un je peux obtenir la demande winHTTP pour être la même forma t comme le régulier? J'utilise VC++ 2008 si cela fait une différence

+0

Je ne connais pas la réponse, mais je suis curieux de savoir pourquoi vous souhaitez cela? – SteelBytes

+0

Depuis que vous devez envoyer Host: site.com dans une ligne distincte et envoyer uniquement le chemin dans le GET? En fait, après avoir lu le RFC, il est dit si le site indiqué dans l'hôte UET GET: devrait être ignoré. – jpyllman

+1

Pouvez-vous poster du code? –

Répondre

4

Votre code devrait ressembler à ceci:

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

Pouvez-vous poster ces trois appels à partir de votre code?

Notez que l'URL complète est divisé en deux - le nom d'hôte est spécifié dans l'appel WinHttpConnect, mais le chemin de la ressource relative est spécifié dans l'appel WinHttpOpenRequest (comme paramètre pwszObjectName). En fonction de votre commentaire, il semble que vous spécifiez l'URL complète dans l'appel WinHttpConnect.