4D v19R6で、HTTPリクエストを実行する新しい方法をお届けしました。HTTPクラスです。当時、HTTP クラスの機能のいくつかは、新しいシンタックスに適応させるために、最終的なものではありませんでした。それは今、完了しました!v19R7では、圧縮応答、チャンク応答、リダイレクションの機能が完成しています。
ボーナスとして、HTTPリクエストのログを取る新しい方法も追加されました。そして、みんなに役立つように、この新しいログはレガシー構文だけでなく、新しいHTTPクラスでも利用可能です。
まず最初に、HTTPクラスの機能性についてお話します。私たちは、レガシー構文の機能を新しい構文に合うように報告し、適合させました。すなわち、HTTP、プロキシおよびサーバ認証、リダイレクト、チャンクされたレスポンス、および圧縮されたレスポンスという、そのほとんどの機能を含んでいます。また、リクエストをキャンセルする機能や、HTTPクライアントリクエストの新しいロギング(これについては次の段落で説明します)など、いくつかの機能を追加しました。新しい構文で報告する必要がある最後の機能は、キープアライブによる接続の持続です:これは、より顕著な機能としてすぐに登場します…別のブログ記事で説明します。ご期待ください。
さて、v19R7で新たに利用できるようになったHTTPクライアントロギングについて説明します。
HTTPクライアントロギングを有効にするのは非常に簡単で、以下の行をコードに追加するだけです。
HTTP SET OPTION(HTTP client log; HTTP enable log with all body parts)
そして、それはそれです!すべてのリクエストとレスポンスは、Logsディレクトリの4DHTTPClientLog_x.txtファイルに、サーバーログと同じフォーマットでログされます。
もちろん、リクエストとレスポンスを完全に記録することもできますが、長いレスポンスでログファイルを乱雑にしたくない場合は、レスポンスボディとリクエストボディさえも削除することができます。構文はサーバーログのアクティベーションに極めて近いので、驚くことはないでしょう。
最後に、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]
この新機能についてご意見があれば、4D公式フォーラムでお気軽にシェアしてください。