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.