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