Функция WinHttpGetProxyForUrl (winhttp.h)

Функция WinHttpGetProxyForUrl извлекает данные прокси-сервера для указанного URL-адреса.

Синтаксис

WINHTTPAPI BOOL WinHttpGetProxyForUrl(
  [in]  HINTERNET                 hSession,
  [in]  LPCWSTR                   lpcwszUrl,
  [in]  WINHTTP_AUTOPROXY_OPTIONS *pAutoProxyOptions,
  [out] WINHTTP_PROXY_INFO        *pProxyInfo
);

Параметры

[in] hSession

Дескриптор сеанса WinHTTP, возвращаемый функцией WinHttpOpen .

[in] lpcwszUrl

Указатель на строку Юникода с пустым завершением, содержащую URL-адрес HTTP-запроса, который приложение готовится к отправке.

[in] pAutoProxyOptions

Указатель на структуру WINHTTP_AUTOPROXY_OPTIONS , указывающую параметры автоматического прокси-сервера.

[out] pProxyInfo

Указатель на структуру WINHTTP_PROXY_INFO , которая получает параметр прокси-сервера. Затем эта структура применяется к дескриптору запроса с помощью параметра WINHTTP_OPTION_PROXY. Освободите строки lpszProxy и lpszProxyBypass , содержащиеся в этой структуре (если они не имеют значение NULL), с помощью функции GlobalFree .

Возвращаемое значение

Если функция выполняется успешно, функция возвращает значение TRUE.

Если функция завершается сбоем, она возвращает значение FALSE. Для получения расширенных данных об ошибках вызовите Метод GetLastError.

Возможные коды ошибок включают folllowing.

Код ошибки Описание
ERROR_WINHTTP_AUTO_PROXY_SERVICE_ERROR
Возвращается WinHttpGetProxyForUrl , если не удается найти прокси-сервер для указанного URL-адреса.
ERROR_WINHTTP_BAD_AUTO_PROXY_SCRIPT
Произошла ошибка при выполнении кода скрипта в файле автоматической настройки прокси-сервера (PAC).
ERROR_WINHTTP_INCORRECT_HANDLE_TYPE
Для этой операции указан неправильный тип дескриптора.
ERROR_WINHTTP_INTERNAL_ERROR
Произошла внутренняя ошибка.
ERROR_WINHTTP_INVALID_URL
Недопустимый URL-адрес.
ERROR_WINHTTP_LOGIN_FAILURE
Попытка входа завершилась сбоем. При обнаружении этой ошибки закройте дескриптор запроса с помощью WinHttpCloseHandle. Перед повтором функции, которая изначально вызвала эту ошибку, необходимо создать новый дескриптор запроса.
ERROR_WINHTTP_OPERATION_CANCELLED
Операция была отменена, как правило, из-за того, что дескриптор, с которым выполнялся запрос, был закрыт до завершения операции.
ERROR_WINHTTP_UNABLE_TO_DOWNLOAD_SCRIPT
Не удалось скачать PAC-файл. Например, сервер, на который ссылается URL-адрес PAC, может быть недоступен, или сервер вернул ответ 404 NOT FOUND.
ERROR_WINHTTP_UNRECOGNIZED_SCHEME
В URL-адресе PAC-файла указана схема, отличаемая от "http:" или "https:".
ERROR_NOT_ENOUGH_MEMORY
Недостаточно памяти для выполнения запрошенной операции. (Код ошибки Windows)

Комментарии

Эта функция реализует протокол автоматического обнаружения веб-прокси (WPAD) для автоматической настройки параметров прокси-сервера для HTTP-запроса. Протокол WPAD скачивает файл автоматической настройки прокси-сервера (PAC), который представляет собой скрипт, который определяет прокси-сервер, используемый для заданного целевого URL-адреса. PAC-файлы обычно развертываются ИТ-отделом в среде корпоративной сети. URL-адрес PAC-файла можно указать явным образом или указать WinHttpGetProxyForUrl для автоматического обнаружения расположения PAC-файла в локальной сети.

WinHttpGetProxyForUrl поддерживает только PAC-файлы на основе ECMAScript.

WinHttpGetProxyForUrl необходимо вызывать для каждого URL-адреса, так как PAC-файл может возвращать другой прокси-сервер для разных URL-адресов. Это полезно, поскольку PAC-файл позволяет ИТ-отделу реализовать балансировку нагрузки прокси-сервера путем сопоставления (хэширования) целевого URL-адреса (указанного параметром lpcwszUrl ) с определенным прокси-сервером в массиве прокси-серверов.

WinHttpGetProxyForUrl кэширует URL-адрес autoproxy и скрипт autoproxy, если автообнаружение указано в элементе dwFlags структуры pAutoProxyOptions . Дополнительные сведения см. в разделе Кэш autoproxy.

Требования

Требование Значение
Минимальная версия клиента Windows XP, Windows 2000 Профессиональная с пакетом обновления 3 (SP3) [только классические приложения]
Минимальная версия сервера Windows Server 2003, Windows 2000 Server с пакетом обновления 3 (SP3) [только классические приложения]
Целевая платформа Windows
Header winhttp.h
Библиотека Winhttp.lib
DLL Winhttp.dll

См. также раздел

Версии WinHTTP