Невозможно получить доступ к определенным веб-сайтам через WinHTTP - PullRequest
0 голосов
/ 24 января 2019

Я пытаюсь получить доступ к файлу, используя WinHTTP с веб-сайта, и он не работает на некоторых веб-сайтах.Я не могу использовать WinINet , поскольку WinINet не поддерживает реализации сервера и не может использоваться из службы.

Сбой с ошибкой 12029 «Попытка подключения к серверу не удалась», когда WinHttpSendRequest () выполняется для WEB_URL = "www.plusserver.com"

Работает, когда WEB_URL = "www.google.com"

Я могу получить доступ к обоим веб-сайтам с помощью веб-браузера Chrome, поэтомунет проблем с подключением.Может быть, брандмауэр на моем конце или на стороне сервера, я не уверен, что брандмауэр блокирует на конкретном порту.

Пример исходного кода, как показано ниже -

bool ReadFileFromInternet(LPCWSTR WEB_URL, DWORD dwSize, LPSTR pszOutBuffer)
{
    DWORD dwDownloaded = 0;
    BOOL  bResults = FALSE;
    HINTERNET  hSession = NULL,
        hConnect = NULL,
        hRequest = NULL;

    // Use WinHttpOpen to obtain a session handle.
    hSession = WinHttpOpen(WEB_URL,
        WINHTTP_ACCESS_TYPE_DEFAULT_PROXY,
        WINHTTP_NO_PROXY_NAME,
        WINHTTP_NO_PROXY_BYPASS, 0);

    // Specify an HTTP server.
    if (hSession)
        hConnect = WinHttpConnect(hSession, WEB_URL,
            INTERNET_DEFAULT_HTTPS_PORT, 0);

    int err = GetLastError();

    // Create an HTTP request handle.
    if (hConnect)
        hRequest = 
        WinHttpOpenRequest(hConnect, L"GET", NULL,
            NULL, WINHTTP_NO_REFERER,
            WINHTTP_DEFAULT_ACCEPT_TYPES,
            WINHTTP_FLAG_SECURE);
    err = GetLastError();

    // Send a request.
    if (hRequest)
        bResults = WinHttpSendRequest(hRequest,
            WINHTTP_NO_ADDITIONAL_HEADERS, 0,
            WINHTTP_NO_REQUEST_DATA, 0,
            0, 0);
    err = GetLastError();

    // End the request.
    if (bResults)
    {
        err = GetLastError();
        bResults = WinHttpReceiveResponse(hRequest, NULL);
    }
    err = GetLastError();

    if (bResults)
    {
        if (!WinHttpReadData(hRequest, (LPVOID)pszOutBuffer,
            dwSize, &dwDownloaded))
            printf("Error %u in WinHttpReadData.\n", GetLastError());
    }

    // Report any errors.
    if (!bResults)
        printf("Error %d has occurred.\n", GetLastError());

    // Close any open handles.
    if (hRequest) WinHttpCloseHandle(hRequest);
    if (hConnect) WinHttpCloseHandle(hConnect);
    if (hSession) WinHttpCloseHandle(hSession);

    return bResults;
}

Как устранить неполадки в дальнейшем?Использую Windows-7, 64-битная

...