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
Все