Вопрос

Я перейду сразу к делу.

  • Так выглядит запрос браузера

    ПОЛУЧИТЬ /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