Ve verzi 4D v19R6 jsme přinesli nový způsob provádění požadavků HTTP: HTTP třídy. V té době ještě nebyly některé funkce tříd HTTP finální, protože jsme je chtěli přizpůsobit nové syntaxi. Nyní je to hotovo! Ve verzi v19R7 jsou nyní dokončeny funkce komprimovaných odpovědí, chunked odpovědí a přesměrování.
Jako bonus jsme také přidali nový způsob protokolování požadavků HTTP. A protože je to užitečné pro všechny, je toto nové protokolování k dispozici jak pro nové třídy HTTP, tak pro starší syntaxi.
Nejprve mi dovolte, abych se zmínil o funkcích tříd HTTP. Ohlásili jsme a upravili fungování starší syntaxe tak, aby odpovídalo nové syntaxi. Zahrnuli jsme většinu jejích funkcí, konkrétně HTTP, proxy a ověřování serverů, přesměrování, chunked odpovědi a komprimované odpovědi. Přidali jsme také několik funkcí, například možnost zrušit požadavek nebo nové protokolování požadavků klienta HTTP (k tomu se dostanu v dalším odstavci). Poslední funkcí, o které musíme v nové syntaxi informovat, je perzistence spojení prostřednictvím keep-alive: brzy se objeví uvnitř mnohem výraznější funkce… kterou vám vysvětlím v jiném příspěvku na blogu. Zůstaňte naladěni!
Nyní si probereme nové protokolování HTTP klientů, které je k dispozici ve verzi v19R7.
Aktivace protokolování klienta HTTP je velmi jednoduchá; stačí do kódu přidat tento řádek:
HTTP SET OPTION(HTTP client log; HTTP enable log with all body parts)
A to je vše! Všechny vaše požadavky a odpovědi se budou zaznamenávat do souboru 4DHTTPClientLog_x.txt v adresáři Logs ve stejném formátu jako logy serveru.
Samozřejmě můžete požadavky a odpovědi zaznamenávat celé, ale pokud nechcete mít soubory protokolu zahlcené dlouhými odpověďmi, můžete odstranit těla odpovědí a dokonce i těla požadavků. Syntaxe je extrémně blízká aktivaci serverových protokolů, takže vás nepřekvapí.
Na závěr uvádíme příklad požadavku a jeho odpovědi (bez jejich těl) zapsaných do souboru protokolu klienta 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]
Pokud máte k této nové funkci nějaké připomínky, neváhejte se o ně s námi podělit na oficiálním fóru 4D.