Поделиться через


Функция HttpSendRequestA (wininet.h)

Отправляет указанный запрос на HTTP-сервер, позволяя вызывающим абонентам отправлять дополнительные данные, выходящие за рамки, которые обычно передаются в HttpSendRequestEx.

Синтаксис

BOOL HttpSendRequestA(
  [in] HINTERNET hRequest,
  [in] LPCSTR    lpszHeaders,
  [in] DWORD     dwHeadersLength,
  [in] LPVOID    lpOptional,
  [in] DWORD     dwOptionalLength
);

Параметры

[in] hRequest

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

[in] lpszHeaders

Указатель на строку, завершающуюся значением NULL, которая содержит дополнительные заголовки для добавления в запрос. Этот параметр может иметь значение NULL , если нет дополнительных заголовков для добавления.

[in] dwHeadersLength

Размер дополнительных заголовков в TCHAR. Если этот параметр имеет значение -1L, а lpszHeaders не равно NULL, функция предполагает, что lpszHeaders имеет нулевое завершение (ASCIIZ), а длина вычисляется. Подробные сведения см. в разделе Примечания.

[in] lpOptional

Указатель на буфер, содержащий любые необязательные данные, отправляемые сразу после заголовков запроса. Этот параметр обычно используется для операций POST и PUT. Необязательными данными могут быть ресурсы или сведения, передаваемые на сервер. Этот параметр может иметь значение NULL , если нет необязательных данных для отправки.

[in] dwOptionalLength

Размер необязательных данных в байтах. Этот параметр может быть равен нулю, если нет необязательных данных для отправки.

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

Возвращает значение TRUE в случае успешного выполнения или FALSE в противном случае. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.

Комментарии

HttpSendRequest отправляет указанный запрос на HTTP-сервер и позволяет клиенту указать дополнительные заголовки для отправки вместе с запросом.

Функция также позволяет клиенту указать необязательные данные для отправки на HTTP-сервер сразу после заголовков запроса. Эта функция обычно используется для операций записи, таких как PUT и POST.

После отправки запроса код состояния и заголовки ответа с HTTP-сервера считываются. Эти заголовки поддерживаются внутри системы и доступны для клиентских приложений с помощью функции HttpQueryInfo .

Приложение может использовать один и тот же дескриптор HTTP-запроса в нескольких вызовах HttpSendRequest, но перед повторным вызовом функции приложение должно считывать все данные, возвращенные из предыдущего вызова.

В автономном режиме HttpSendRequest возвращает ERROR_FILE_NOT_FOUND , если ресурс не найден в кэше Интернета.

Существует две версии HttpSendRequest: HttpSendRequestA (используется со сборками ANSI) и HttpSendRequestW (используется со сборками Юникода). Если параметр dwHeadersLength имеет значение -1L, а lpszHeaders не имеет значение NULL, произойдет следующее. Если вызывается HttpSendRequestA , функция предполагает, что lpszHeaders имеет нулевое завершение (ASCIIZ) и вычисляется длина. Если вызывается HttpSendRequestW , функция завершается сбоем с ERROR_INVALID_PARAMETER.

Примечание Функция HttpSendRequestA представляет заголовки в виде символов ISO-8859-1, а не символов ANSI. Функция HttpSendRequestW представляет заголовки в виде символов ISO-8859-1, преобразованных в символы UTF-16LE. В результате никогда не безопасно использовать функцию HttpSendRequestW , если добавляемые заголовки могут содержать символы, отличные от ASCII. Вместо этого приложение может использовать функции MultiByteToWideChar и WideCharToMultiByte с параметром Codepage , равным 28591, для сопоставления между символами ANSI и символами UTF-16LE.
 
Как и все другие аспекты API WinINet, эту функцию нельзя безопасно вызывать из библиотеки DllMain или из конструкторов и деструкторов глобальных объектов.
Примечание WinINet не поддерживает реализации сервера. Кроме того, его не следует использовать из службы. Для серверных реализаций или служб используйте службы Microsoft Windows HTTP (WinHTTP).
 

Примечание

Заголовок wininet.h определяет HttpSendRequest в качестве псевдонима, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОД. Использование псевдонима, не зависящий от кодирования, с кодом, который не является нейтральным для кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или времени выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header wininet.h
Библиотека Wininet.lib
DLL Wininet.dll

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

Сеансы HTTP

Функции WinINet