HTTPAgent
La clase HTTPAgent
permite manejar HTTPAgent objects
que pueden ser utilizados para gestionar la persistencia y reutilización de conexiones a servidores utilizando la clase HTTPRequest.
La clase HTTPAgent
está disponible en el class store 4D
. Puede crear un nuevo objeto HTTPAgent
utilizando la función 4D.HTTPAgent.new().
Cuando no hay ningún agente asociado a una petición HTTP, se utiliza un agente global con valores por defecto. El agente por defecto es la forma más simple de agente HTTP, adecuado para casos de uso básicos. Los agentes personalizados se recomiendan para tener un mayor control, a nivel de agente en lugar de para cada petición HTTP, sobre aspectos específicos de la conexión como la configuración de keep-alive, los tiempos de espera o las configuraciones TLS/SSL.
Historia
Lanzamiento | Modificaciones |
---|---|
20 R6 | Clase añadida |
Objeto HTTPAgent
Un objeto HTTPAgent es un objeto compartible.
Los objetos HTTPAgent ofrecen las siguientes propiedades y funciones:
options : Object las opciones utilizadas actualmente del HTTPAgent |
requestsCount : Integer el número de peticiones gestionadas actualmente por el HTTPAgent |
freeSocketsCount : Integer el número de sockets libres de maxSockets asociados al HTTPAgent |
Dado que HTTPAgent es un objeto compartible, puede añadir uno a una clase singleton para poder utilizar el mismo agente para todas sus peticiones al mismo servidor.
4D.HTTPAgent.new()
4D.HTTPAgent.new( { options : Object } ) : 4D.HTTPAgent
Parámetros | Tipo | Descripción | |
---|---|---|---|
options | Object | -> | opciones por defecto para el HTTPAgent |
Result | 4D.HTTPAgent | <- | Nuevo objeto HTTPAgent |
Descripción
La función 4D.HTTPAgent.new()
crea un objeto HTTPAgent compartible con las opciones definidas, y devuelve un objeto 4D.HTTPAgent
.
El [objeto HTTPAgent
] devuelto (#httpagent-object) se utiliza para personalizar las conexiones a servidores HTTP.
Parámetro options
En el parámetro options, pase un objeto que pueda contener las siguientes propiedades (todas las propiedades son opcionales):
Las opciones de HTTPAgent se fusionarán con opciones HTTPRequest (las opciones de HTTPRequest tienen preferencia); si no se define un agente específico, se utilizará un agente global.
Propiedad | Tipo | Por defecto | Descripción |
---|---|---|---|
keepAlive | Boolean | true | Activa keep alive para el agente |
maxSockets | Integer | 65535 | Número máximo de sockets por servidor |
maxTotalSockets | Integer | 65535 | Número máximo de sockets para el agente |
timeout | Real | indefinido | Si se define, tiempo después del cual se cierra un socket no utilizado |
certificatesFolder | Folder | undefined (ver valor por defecto en HTTPRequest.new()) | Define la carpeta activa de certificados de cliente para las solicitudes que utilizan el agente |
minTLSVersion | Text | undefined (ver valor por defecto en HTTPRequest.new()) | Define la versión mínima de TLS para las solicitudes que utilizan este agente |
protocol | Text | undefined (ver valor por defecto en HTTPRequest.new()) | Protocolo usado para las peticiones utilizando el agente |
validateTLSCertificate | Boolean | undefined (ver valor por defecto en HTTPRequest.new()) | Validar el certificado Tls para las solicitudes que utilizan el agente |
Puede solicitar múltiples servidores utilizando el mismo agente. En ese caso, cada servidor tendrá su propio grupo de conexiones utilizando las mismas opciones de agente.
Ejemplo
Creación del HTTPAgent:
var $options:={}
$options.maxSockets:=5 //5 es el número máximo de sockets por servidor
$options.maxTotalSockets:=10 //10 es el número máximo de sockets para el agente
$options.validateTLSCertificate:=True //Validar el certificado del servidor
var $myAgent:=4D.HTTPAgent.new($options)
Enviando una solicitud para comprobar la hora local de cualquier ciudad:
var $options:={}
$options.method:="GET"
$options.agent:=$myAgent
var $myRequest:=4D.HTTPRequest.new("http://worldtimeapi.org/api/timezone/Europe/Paris"; $options)
Cuando no hay ningún agente asociado a una HTTPRequest, se utiliza un agente global con valores por defecto.
.options
options : Object
Descripción
El objeto de propiedad .options
contiene las opciones utilizadas actualmente del HTTPAgent.
.requestsCount
requestsCount : Integer
Descripción
La propiedad .requestsCount
contiene el número de peticiones gestionadas actualmente por el HTTPAgent.
.freeSocketsCount
freeSocketsCount : Integer
Descripción
La propiedad .freeSocketsCount
contiene el número de sockets libres de maxSockets
asociados al HTTPAgent.