HTTPRequest
A classe HTTPRequest
permite que você lide com objetos HTTPRequest
que pode ser usado para configurar e enviar solicitações a um servidor HTTP, além de processar as respostas do servidor HTTP.
A classe HTTPRequest
está disponível no class store 4D
. Você cria e envia solicitações HTTP usando a função 4D.HTTPRequest.new() que retorna uma HTTPRequest object
.
História
Release | Mudanças |
---|---|
19 R6 | Classe adicionada |
Exemplo
Criar uma classe MyHttpRequestOptions
para as opções de pedido:
Class constructor($method : Text; $headers : Object; $body : Text)
This.method:=$method This.headers:=$headers This.body:=$body Function onResponse($request : 4D.HTTPRequest; $event : Object)
//Método My onResponse, se quiser manejar a petição de forma assincronica Function onError($request : 4D.HTTPRequest; $event : Object)
//Método My onError, se quiser manejar a petição de forma assincrônica
Pode agora criar o seu pedido:
var $headers : Object
$headers:=New object()
$headers["field1"]:="value1"
var myHttpRequestOptions : cs. MyHttpRequestOptions
myHttpRequestOptions := cs. MyHttpRequestOptions.new("GET"; $headers; "")
var $request : 4D.HTTPRequest
$request:=4D.HTTPRequest.new("www.google.com"; myHttpRequestOptions)
$request.wait() //If you want to handle the request synchronously
//Now pode usar $request.response para aceder ao resultado do pedido ou $request.error para verificar o erro que aconteceu.
Objeto HTTPRequest
Um objecto HTTPRequest é um objecto não partilhável.
Os objectos HTTPRequest fornecem as seguintes propriedades e funções:
agent : 4D.HTTPAgent o objeto agent passado em options ou o objeto agente global se ele foi omitido |
dataType : Text o dataType passado no objeto options ao chamar new(), "auto" se foi omitido |
encoding : Text o encoding passado no objeto options ao chamar new(), "UTF-8" se ele foi omisso |
errors : Collection a coleção de todos os erros se pelo menos um erro tiver sido acionado |
headers : Object o headers passado no objeto options ao chamar new() |
method : Text o método passado no objeto options ao chamar new() |
protocol : Text o protocolo passado no objeto options ao chamar new() |
response : Object a resposta à solicitação se ela tiver recebido pelo menos o código de estado, indefinido caso contrário |
returnResponseBody : Boolean o returnResponseBody passado em o objeto options ao chamar new() |
.terminate() aborta a solicitação HTTP |
terminated : Boolean True se a solicitação for encerrada (após a chamada para onTerminate ), false caso contrário |
timeout : Real o timeout passado no objeto options ao chamar new() |
url : Text a URL da solicitação HTTP |
.wait( { timeout : Real } ) : 4D.HTTPRequest espera por uma resposta do servidor ou até o timeout especificado ser alcançado |
4D.HTTPRequest.new()
História
Release | Mudanças |
---|---|
20 | Validação TLS por padrão |
18 R6 | Suporte às propriedades automaticRedirections e decodeData |
4D.HTTPRequest.new( url : Text { ; options : Object } ) : 4D.HTTPRequest
Parâmetro | Tipo | Descrição | |
---|---|---|---|
url | Text | -> | URL para onde enviar o pedido |
options | Object | -> | Pedir propriedades de configuração |
Resultados | 4D.HTTPRequest | <- | Novo objecto HTTPRequest |
Descrição
A função 4D.HTTPRequest.new()
cria e envia uma solicitação HTTP para o servidor HTTP definido na url com as opções definidas e retorna um objeto 4D.HTTPRequest
.
The returned HTTPRequest
object is used to process responses from the HTTP server and call methods.
In url, pass the URL where you want to send the request. A sintaxe a utilizar é:
{http://}[{user}:[{password}]@]host[:{port}][/{path}][?{queryString}]
{https://}[{user}:[{password}]@]host[:{port}][/{path}][?{queryString}]
Se você omitir a parte do esquema (http://
ou https://
), é enviado um pedido https.
Por exemplo, pode passar as seguintes cordas:
http://www.myserver.com
www.myserver.com/path
http://www.myserver.com/path?name="jones"
https://www.myserver.com/login
http://123.45.67.89:8083
http://john:smith@123.45.67.89:8083
http://[2001:0db8:0000:0000:0000:ff00:0042:8329]
http://[2001:0db8:0000:0000:0000:ff00:0042:8329]:8080/index.html (**)
options
parameter
In the options parameter, pass an object that can contain the following properties:
Propriedade | Tipo | Descrição | Por padrão |
---|---|---|---|
agent | 4D.HTTPAgent | HTTPAgent para usar para o HTTPRequest. Agent options will be merged with request options (request options take precedence). If no specific agent is defined, a global agent with default values is used. | Global agent object |
automaticRedirections | Parâmetros | Se true, os redirecionamentos serão realizados automaticamente (até 5 redirecionamentos são tratados, a resposta do 6. º redirecionamento é retornada, se houver) | True |
body | Diferente de | Corpo do pedido (requerido no caso de post ou put requests). Pode ser um texto, um blob, ou um objecto. O tipo de conteúdo é determinado a partir do tipo desta propriedade, a menos que seja colocado dentro dos cabeçalhos | indefinido |
certificatesFolder | Folder | Define a pasta de certificados de cliente activos | indefinido |
dataType | Text | Tipo de atributo do corpo de resposta. Valores: "texto", "blob", "objecto", ou "auto". Se "auto", o tipo do conteúdo do corpo será deduzido do seu tipo MIME (objecto para JSON, texto para texto, javascript, xml, mensagem http e forma codificada url, ou então um blob) | "auto" |
decodeData | Parâmetros | Se for verdade, os dados recebidos em onData callback não são compactados | False |
encoding | Text | Used only in case of requests with a body (post or put methods). Codificação do conteúdo do corpo do pedido se for um texto, ignorado se o tipo de conteúdo for colocado dentro dos cabeçalhos | "UTF-8" |
headers | Object | Cabeçalhos do pedido. Syntax: headers.key=value (value can be a Collection if the same key must appear multiple times) | Objecto vazio |
method | Text | "POST", "GET", ou outro método | "GET" |
minTLSVersion | Text | Sets the minimum version of TLS: "TLSv1_0 ", "TLSv1_1 ", "TLSv1_2 ", "TLSv1_3 " | "TLSv1_2 " |
onData | Function | Chamada de retorno quando os dados do corpo são recebidos. Recebe dois objectos como parâmetros (ver abaixo) | indefinido |
onError | Function | Chamada de retorno quando ocorre um erro. Recebe dois objectos como parâmetros (ver abaixo) | indefinido |
onHeaders | Function | Chamada de retorno quando os cabeçalhos são recebidos. Recebe dois objectos como parâmetros (ver abaixo) | indefinido |
onResponse | Function | Chamada de retorno quando uma resposta é recebida. Recebe dois objectos como parâmetros (ver abaixo) | indefinido |
onTerminate | Function | Chamada de retorno quando o pedido estiver terminado. Recebe dois objectos como parâmetros (ver abaixo) | indefinido |
protocol | Text | "auto" ou "HTTP1". "auto" significa HTTP1 na implementação actual | "auto" |
proxyAuthentication | objeto de autenticação | Autenticação por procuração de tratamento de objectos | indefinido |
serverAuthentication | objeto de autenticação | Autenticação do servidor de tratamento de objectos | indefinido |
returnResponseBody | Parâmetros | Se false, o corpo de resposta não é retornado no objeto response . Devolve um erro se falso e onData é indefinido | True |
timeout | Real | Tempo de espera em segundos. Indefinido = sem timeout | Indefinido |
validateTLSCertificate | Parâmetros | Se false, 4D não valida o certificado TLS e não retorna um erro se ele for inválido (i.e. expirado, auto-assinado...). Importante: Na implementação actual, a Autoridade de Certificação em si não é verificada. | True |
Funções Callback
Todas as funções de chamada de retorno recebem dois parâmetros de objectos:
Parâmetro | Tipo |
---|---|
$param1 | Objeto HTTPRequest |
$param2 | Objeto Event |
Aqui está a sequência de chamadas de retorno:
-
onHeaders
é sempre chamado uma vez -
onData
is called zero or several times (not called if the request does not have a body) -
Se não ocorreu nenhum erro,
onResponse
é sempre chamado uma vez -
Se ocorrer um erro,
onError
é executado uma vez (e encerra o pedido) -
onTerminate
é sempre executado uma vez
Para as funções de callback serem chamadas quando você não usa wait()
(chamada assíncrona), o processo deve ser um worker criado com CALL WORKER
, NÃO New process
.
objecto evento
Um objeto event
é retornado quando uma função de retorno de chamada é chamada. Contém as seguintes propriedades:
Propriedade | Tipo | Descrição |
---|---|---|
.data | blob | Dados recebidos. É sempre undefined excepto no callback onData |
.type | text | Tipo de evento. Possíveis valores: "resposta", "erro", "cabeçalhos", "dados", ou "terminar |
authentication-object
An authentication object handles the options.serverAuthentication
or options.proxyAuthentication
property. Pode conter as seguintes propriedades:
Propriedade | Tipo | Descrição | Por padrão |
---|---|---|---|
name | Text | Nome utilizado para autenticação | indefinido |
senha | Text | Senha utilizada para autenticação | indefinido |
method | Text | Método utilizado para autenticação: "basic", "digest", "auto". | "auto" |
.agent
agent : 4D.HTTPAgent
Descrição
A propriedade .agent
contém o objeto agent
passado em options
ou o objeto agente global se ele foi omitido.
.dataType
dataType : Text
Descrição
A propriedade .dataType
contém o dataType
passado no objeto options
ao chamar new(), "auto" se foi omitido.
.encoding
encoding : Text
Descrição
A propriedade .encoding
contém o encoding
passado no objeto options
ao chamar new(), "UTF-8" se ele foi omisso.
.errors
errors : Collection
Descrição
A propriedade .errors
contém a coleção de todos os erros se pelo menos um erro tiver sido acionado.
Aqui está o conteúdo da propriedade .errors
:
Propriedade | Tipo | Descrição | |
---|---|---|---|
errors | Collection | pilha de erros 4D em caso de erro | |
[].errCode | Number | Código de erro 4D | |
[].message | Text | Descrição do erro 4D | |
[].componentSignature | Text | Assinatura da componente interna que devolveu o erro |
.headers
headers : Object
Descrição
A propriedade .headers
contém o headers
passado no objeto options
ao chamar new(). Se foi omitido, contém um objecto vazio.
.method
method : Text
Descrição
A propriedade .method
contém o método
passado no objeto options
ao chamar new(). Se foi omitido, contém "GET".
.protocol
protocol : Text
Descrição
A propriedade .protocol
contém o protocolo
passado no objeto options
ao chamar new(). Se foi omitido ou se "auto" foi utilizado, contém a versão do protocolo utilizado.
.response
História
Release | Mudanças |
---|---|
19 R8 | .headers devolve nomes em minúsculas. Nova propriedade .rawHeaders |
response : Object
Descrição
A propriedade .response
contém a resposta à solicitação se ela tiver recebido pelo menos o código de estado, indefinido caso contrário.
Um objeto response
é um objeto não compartilhável. Contém as seguintes propriedades:
Propriedade | Tipo | Descrição |
---|---|---|
.body | Diferente de | Corpo da resposta. O tipo da mensagem é definido conforme a propriedade dataType . Indefinido se o corpo ainda não tiver sido recebido |
.headers | Object | Cabeçalhos da resposta. Os nomes dos cabeçalhos são devolvidos em minúsculas. <headername>.key = value (value can be a collection if the same key appears multiple times). Indefinido se os cabeçalhos ainda não tiverem sido recebidos. |
.status | Number | Código de estado da resposta |
.statusText | Text | Mensagem que explica o código de estado |
.rawHeaders | Object | Cabeçalhos da resposta. Os nomes dos cabeçalhos são devolvidos intactos (com o seu caso original). <headerName>.key = value (value can be a collection if the same key appears multiple times). Indefinido se os cabeçalhos ainda não tiverem sido recebidos. |
.returnResponseBody
returnResponseBody : Boolean
Descrição
A propriedade .returnResponseBody
contém o returnResponseBody
passado em o objeto options
ao chamar new(). Se foi omitido, contém True.
.terminate()
.terminate()
Parâmetro | Tipo | Descrição | |
---|---|---|---|
Não exige nenhum parâmetro |
Descrição
Esta função é thread segura.
A função .terminate()
aborta a solicitação HTTP . Desencadeia o evento onTerminate
.
.terminated
terminated : Boolean
Descrição
A propriedade .terminated
contém True se a solicitação for encerrada (após a chamada para onTerminate
), false caso contrário.
.timeout
timeout : Real
Descrição
A propriedade .timeout
contém o timeout
passado no objeto options
ao chamar new(). Se foi omitido, contém Indefinido.
.url
url : Text
Descrição
A propriedade .url
contém a URL da solicitação HTTP .
.wait()
.wait( { timeout : Real } ) : 4D.HTTPRequest
Parâmetro | Tipo | Descrição | |
---|---|---|---|
timeout | Real | -> | Maximum wait time in seconds |
Resultados | 4D.HTTPRequest | <- | HTTPRequest object |
Descrição
Esta função é thread segura.
A função wait()
espera por uma resposta do servidor ou até o timeout
especificado ser alcançado.
If a timeout is provided, the function waits for the specified duration in this parameter. Decimals are accepted.
Se a resposta do servidor já tiver chegado, a função regressa imediatamente.
During the .wait() execution, callback functions from workers are executed, whether they originate from other HTTPRequest
or SystemWorker
instances, or other CALL WORKER
calls. Você pode sair de uma .wait() chamando terminate()
de um retorno de chamada.