PureBasic

HTTPRequest()

Синтаксис

Result = HTTPRequest(Type , URL$ [,Data$ [, Flags [, Headers()]]])

Описание


Отправляет HTTP-запрос с дополнительными текстовыми данными. Если необходимо отправить двоичные данные, можно использовать HTTPRequestMemory(). Эта команда предназначена для простой обработки 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$ (дополн.) Текстовые данные для отправки вместе с запросом (будут отправлены в формате UTF-8).
Flags (дополн.) Этот параметр может быть комбинацией следующих значение (с помощью оператора '|'):
  #PB_HTTP_Asynchronous: начинать загрузку асинхронно.
  #PB_HTTP_NoRedirect  : не следовать автоматическим перенаправлениям.
  #PB_Http_NoSSLCheck  : не проверять действительность SSL-сертификата (может быть полезно для тестирования).
Headers() (дополн.) Карта пар строк для указания дополнительных заголовков для запроса. Пример:

NewMap Header$()
Header$("ContentType") = "text/plain"
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 = HTTPRequest(#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

Пример с заголовками

InitNetwork()

NewMap Header$()
Header$("ContentType") = "plaintext"
Header$("UserAgent") = "Firefox 54.0"

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

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

См. также

HTTPRequest(), URLEncoder()

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

Все

<- HTTPProxy() - Оглавление Http - HTTPRequestMemory() ->