Delphi TIdHttpServer:是否可以记录所有流量?

时间:2019-02-11 15:01:52

标签: http delphi indy

我正在用TIdHttpServer编写HTTP服务器,并且我想正确记录所有流量(完整的HTTP请求)。我为此找到了几个类似的主题,但是在这些主题中我都找不到可以保证响应是否实际发送的保证。
我知道如果无法发送响应,则会在function TIdCustomHTTPServer.DoExecute(AContext:TIdContext): boolean;的Indy中触发一个异常,但是该异常也可能在发送响应后发生(并且TIdHttpServer正在等待下一个命令)。 有没有办法知道命令是否实际发送?

在下面的示例中,我设法正确记录了传入消息,但是我没有找到检测响应是否发送的正确方法。

procedure TfmMain.IdHTTPServer1CommandGet(AContext: TIdContext; ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
begin
  //log the incoming request
  Log(getIdConnPeerAsStr(AContext) {IP:port} + (ARequestInfo.RawHTTPCommand + ARequestInfo.RawHeaders.Text));

  //Prepare the response
  AResponseInfo.ContentType := 'text/html';
  AResponseInfo.CharSet := 'utf-8';
  AResponseInfo.ContentText := '<html><body>Hello</body></html>';

  //How to log the output(AResponseInfo) here?  It is too soon because the sending of the packet has not yet occurred
end;

0 个答案:

没有答案