TsgcWebSocketHTTPServer › 事件 › OnAfterForwardHTTP
在 HTTP 请求转发后触发,以便应用程序可以检查结果或上游服务器返回的错误。
property OnAfterForwardHTTP: TsgcWSOnAfterForwardHTTP;
// TsgcWSOnAfterForwardHTTP = procedure(Connection: TsgcWSConnection; ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo; E: Exception) of object
—
OnAfterForwardHTTP 在 OnBeforeForwardHTTP 启用转发且上游 HTTP 请求完成后触发。ARequestInfo 是原始客户端请求,AResponseInfo 是即将写回的响应(由上游服务器填充的 ResponseNo、ContentType、ContentText 等),E 在成功时为 nil,在联系目标服务器时引发异常则为该异常。使用此事件记录结果、在返回客户端之前重写响应头/体,或在上游调用失败时用自定义错误页面覆盖响应。
procedure OnAfterForwardHTTP(Connection: TsgcWSConnection; ARequestInfo: TIdHTTPRequestInfo;
AResponseInfo: TIdHTTPResponseInfo; E: Exception);
begin
if Assigned(E) then
begin
AResponseInfo.ResponseNo := 502;
AResponseInfo.ContentText := 'Upstream error: ' + E.Message;
end
else
Log(Format('forwarded %s -> %d', [ARequestInfo.Document, AResponseInfo.ResponseNo]));
end;