Saltar para o conteúdo principal
Versão: 20 R8 BETA

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
ReleaseMudanças
19 R6Classe 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 agentpassado 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
ReleaseMudanças
20Validação TLS por padrão
18 R6Suporte às propriedades automaticRedirections e decodeData

4D.HTTPRequest.new( url : Text { ; options : Object } ) : 4D.HTTPRequest

ParâmetroTipoDescrição
urlText->URL para onde enviar o pedido
optionsObject->Pedir propriedades de configuração
Resultados4D.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:

PropriedadeTipoDescriçãoPor padrão
agent4D.HTTPAgentHTTPAgent 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
automaticRedirectionsParâmetrosSe true, os redirecionamentos serão realizados automaticamente (até 5 redirecionamentos são tratados, a resposta do 6. º redirecionamento é retornada, se houver)True
bodyDiferente deCorpo 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çalhosindefinido
certificatesFolderFolderDefine a pasta de certificados de cliente activosindefinido
dataTypeTextTipo 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"
decodeDataParâmetrosSe for verdade, os dados recebidos em onData callback não são compactadosFalse
encodingTextUsed 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"
headersObjectCabeçalhos do pedido. Syntax: headers.key=value (value can be a Collection if the same key must appear multiple times)Objecto vazio
methodText"POST", "GET", ou outro método"GET"
minTLSVersionTextSets the minimum version of TLS: "TLSv1_0", "TLSv1_1", "TLSv1_2", "TLSv1_3""TLSv1_2"
onDataFunctionChamada de retorno quando os dados do corpo são recebidos. Recebe dois objectos como parâmetros (ver abaixo)indefinido
onErrorFunctionChamada de retorno quando ocorre um erro. Recebe dois objectos como parâmetros (ver abaixo)indefinido
onHeadersFunctionChamada de retorno quando os cabeçalhos são recebidos. Recebe dois objectos como parâmetros (ver abaixo)indefinido
onResponseFunctionChamada de retorno quando uma resposta é recebida. Recebe dois objectos como parâmetros (ver abaixo)indefinido
onTerminateFunctionChamada de retorno quando o pedido estiver terminado. Recebe dois objectos como parâmetros (ver abaixo)indefinido
protocolText"auto" ou "HTTP1". "auto" significa HTTP1 na implementação actual"auto"
proxyAuthenticationobjeto de autenticaçãoAutenticação por procuração de tratamento de objectosindefinido
serverAuthenticationobjeto de autenticaçãoAutenticação do servidor de tratamento de objectosindefinido
returnResponseBodyParâmetrosSe false, o corpo de resposta não é retornado no objeto response. Devolve um erro se falso e onData é indefinidoTrue
timeoutRealTempo de espera em segundos. Indefinido = sem timeoutIndefinido
validateTLSCertificateParâmetrosSe 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âmetroTipo
$param1Objeto HTTPRequest
$param2Objeto Event

Aqui está a sequência de chamadas de retorno:

  1. onHeaders é sempre chamado uma vez

  2. onData is called zero or several times (not called if the request does not have a body)

  3. Se não ocorreu nenhum erro, onResponse é sempre chamado uma vez

  4. Se ocorrer um erro, onError é executado uma vez (e encerra o pedido)

  5. onTerminate é sempre executado uma vez

info

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:

PropriedadeTipoDescrição
.datablobDados recebidos. É sempre undefined excepto no callback onData
.typetextTipo 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:

PropriedadeTipoDescriçãoPor padrão
nameTextNome utilizado para autenticaçãoindefinido
senhaTextSenha utilizada para autenticaçãoindefinido
methodTextMétodo utilizado para autenticação: "basic", "digest", "auto"."auto"

.agent

agent : 4D.HTTPAgent

Descrição

A propriedade .agent contém o objeto agentpassado 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:

PropriedadeTipoDescrição
errorsCollectionpilha de erros 4D em caso de erro
[].errCodeNumberCódigo de erro 4D
[].messageTextDescrição do erro 4D
[].componentSignatureTextAssinatura 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
ReleaseMudanç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:

PropriedadeTipoDescrição
.bodyDiferente deCorpo da resposta. O tipo da mensagem é definido conforme a propriedade dataType. Indefinido se o corpo ainda não tiver sido recebido
.headersObjectCabeç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.
.statusNumberCódigo de estado da resposta
.statusTextTextMensagem que explica o código de estado
.rawHeadersObjectCabeç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âmetroTipoDescriçã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âmetroTipoDescrição
timeoutReal->Maximum wait time in seconds
Resultados4D.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.

nota

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.