Últimas melhorias do cliente HTTP

Tradução automática de Deepl

Com 4D v19R6, trouxemos-lhe uma nova forma de executar pedidos HTTP: Classes HTTP. Nessa altura, algumas das funcionalidades das classes HTTP não eram definitivas, pois queríamos adaptá-las à nova sintaxe. Agora está feito! Na v19R7, as respostas comprimidas, as respostas em pedaços, e as funcionalidades de redireccionamento estão agora completas.

Como bónus, adicionámos também uma nova forma de registar pedidos HTTP. E como é útil para todos, este novo registo está disponível para as novas classes HTTP, bem como para a sintaxe herdada.

Antes de mais, deixe-me falar sobre as funcionalidades das classes HTTP. Temos relatado e adaptado o funcionamento da sintaxe herdada para se adequar à nova sintaxe. Incluímos a maioria das suas funcionalidades, nomeadamente HTTPs, proxy e autenticação de servidor, redireccionamentos, respostas em pedaços, e respostas comprimidas. Também adicionámos algumas funcionalidades, como a capacidade de cancelar um pedido ou o novo registo de pedidos de clientes HTTP (Chegarei a este ponto no parágrafo seguinte). A última funcionalidade que precisamos de relatar na nova sintaxe é a persistência da ligação através de um “keep-alive”: virá em breve dentro de uma funcionalidade muito mais proeminente… que vos explicarei noutro post do blog. Fiquem atentos!

Agora, vamos discutir o novo registo de cliente HTTP disponível em v19R7.
Activar o registo de cliente HTTP é extremamente simples; basta adicionar esta linha ao seu código:

HTTP SET OPTION(HTTP client log; HTTP enable log with all body parts)

E é tudo! Todos os seus pedidos e respostas serão registados no ficheiro 4DHTTPClientLog_x.txt no directório Logs com o mesmo formato que os logs do servidor.

Claro, pode registar os pedidos e respostas na totalidade, mas se não quiser que os seus ficheiros de registo sejam sobrecarregados com respostas longas, pode remover os corpos de resposta e mesmo os corpos de pedido. A sintaxe é extremamente próxima da activação dos registos do servidor, pelo que não ficará surpreendido.

Finalmente, aqui está um exemplo de um pedido e a sua resposta (sem os seus corpos) logados no ficheiro de registo de cliente HTTP:

# REQUEST
# SequenceID: 7
# ConnectionID: DDF30D20070B0848B455971A0D627ED6
# LocalIP: 192.168.18.11:52097
# PeerIP: 192.168.4.7:3128
# TimeStamp: -1607148967
GET http://www.4d.com:80/ HTTP/1.1
Accept-Encoding: gzip, deflate
Connection: Close
Content-Length: 4
Content-Type: text/plain; charset=UTF-8
Date: Fri, 23 Sep 2022 09:30:58 GMT
Host: www.google.com
User-Agent: 4D_HTTP_Client/0.
[Body Size: 4]

# RESPONSE
# SequenceID: 6
# ConnectionID: 8EA22B111F16B04B92966DEFAA22704F
# LocalIP: 192.168.18.11:52090
# PeerIP: 192.168.4.7:3128
# TimeStamp: -1607191491
# ElapsedTimeInMs: 154
HTTP/1.1 200 OK
Cache-Control: private, max-age=0
Connection: close
Content-Encoding: gzip
Content-Length: 6185
Content-Type: text/html; charset=ISO-8859-1
Date: Fri, 23 Sep 2022 09:30:16 GMT
Expires: -1
Via: 1.1 proxy-squid (squid/3.5.27)
[Body Size: 6185]

Se tiver quaisquer comentários sobre esta nova funcionalidade, sinta-se à vontade para os partilhar connosco no fórum oficial 4D.

Nicolas Brachfogel
• Proprietário do produto e Desenvolvedor Senior -Nicolas Brachfogel entrou a 4D em 2017 como Senior Developer (4D Server e Networking). Como Product Owner para gerenciar o lançamento de Apple Silicon, está a cargo de escrever as histórias dos usuários e depois traduzi-las em especificações funcionais, além de garantir que as implementações de funcionalidade cumpram com as necessidades do cliente. Diplomado pelo Instituto Superior de Informática Aplicada (INSIA), Nicolas começou sua carreira como desenvolvedor de software em 2001. Depois de vários anos codificando em Java e C++, passou a especializar-se no desenvolvimento cliente-servidor para empresas de videogames. Como desenvolvedor/arquiteto de servidores, trabalhou com sucesso nas arquiteturas de servidores de muitos jogos (Dofus Arena, Drakerz, Trivial Pursuit Go!)