PureBasic

HTTPRequestMemory()

Синтаксис

Result = HTTPRequestMemory(Type , URL$ [*Data , DataSize [, Flags [, Headers()]]])

Описание


Отправляет HTTP-запрос с необязательными двоичными данными. Если необходимо отправить только текстовые данные, можно использовать HTTPRequest(). Эта команда предназначена для простой обработки REST-подобного веб-API. После выполнения запроса всегда должна быть вызвана команда FinishHTTP().

Параметры

Type Тип запроса. Может быть одним из следующих значений:
  #PB_HTTP_Get   : GET - запрос (параметр 'Data' будет игнорироваться)
  #PB_HTTP_Post  : POST - запрос (параметр 'Data' будет отправлен, если указан)
  #PB_HTTP_Put   : PUT - запрос (параметр 'Data' будет отправлен, если указан)
  #PB_HTTP_Patch : PATCH - запрос (параметр 'Data' будет отправлен, если указан)
  #PB_HTTP_Delete: DELETE - запрос (параметр 'Data' будет отправлен, если указан)
URL$ URL используемый для отправки запроса.
*Data (дополн.) Буфер памяти с данными, которые будут отправлены вместе с запросом.
DataSize (дополн.) Размер (в байтах) буфера памяти с данными, которые будут отправлены вместе с запросом.
Flags (дополн.) Этот параметр может быть комбинацией следующих значение (с помощью оператора '|'):
  #PB_HTTP_Asynchronous: начинать загрузку асинхронно.
  #PB_HTTP_NoRedirect  : не следовать автоматическим перенаправлениям.
  #PB_Http_NoSSLCheck  : не проверять действительность SSL-сертификата (может быть полезно для тестирования).
Headers() (дополн.) Карта пар строк для указания дополнительных заголовков для запроса. Пример:

NewMap Header$()
Header$("ContentType") = "octectstream"
Header$("UserAgent") = "Firefox 54.0"
Header$("NoParamHeader") = ""  ; При отсутствии строкового значения, это будет пустой параметр

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

Возвращает идентификатор HTTP-запроса, если вызов был успешно инициализирован, в противном случае - 0.
Для получения некоторой информации о запросе может использоваться HTTPInfo().
Если было указано #PB_HTTP_Asynchronous, можно использовать HTTPProgress() и AbortHTTP().
Для получения результата в виде буфера необработанных данных можно использовать HTTPMemory(), в последствии буфер должен быть освобожден с помощью FreeMemory().
Для завершения успешно инициализированного HTTP-запроса всегда должна вызываться команда FinishHTTP(), даже если вызов был синхронным.

Примечания

Перед использованием этой команды необходим вызов InitNetwork().

В Linux необходимо установить libcurl, чтобы эта команда работала (в большинстве дистрибутивов Linux она уже установлена).

Пример

InitNetwork()

HttpRequest = HTTPRequestMemory(#PB_HTTP_Get, "https://www.google.com")
If HttpRequest
    Debug "StatusCode: " + HTTPInfo(HTTPRequest, #PB_HTTP_StatusCode)
    Debug "Response: " + HTTPInfo(HTTPRequest, #PB_HTTP_Response)

    FinishHTTP(HTTPRequest)
Else
    Debug "Ошибка создания запроса"
EndIf

См. также

HTTPRequest(), URLEncoder()

Поддерживаемые OS

Все

<- HTTPRequest() - Оглавление Http - ReceiveHTTPFile() ->