重写delphisoap响应

重写delphisoap响应,delphi,soap,web,serialization,Delphi,Soap,Web,Serialization,是否可以在SOAP Web应用程序中重写Delphi SOAP TwebreResponse? 或者(更好)重写响应的序列化 我需要从自定义序列化程序(我已经拥有)创建响应对象,并希望将此XML序列化传递给客户端。不确定这是否有帮助,但每当我需要修改SOAP响应的某些输出时,我都会这样做: 我使用的是DELPHI XE2,在我的webmodule所在的单元中,有一个HTTPSoapPascalInvoker1。 在ObjectInspector中,我创建了一个AfterDispatchevent

是否可以在SOAP Web应用程序中重写Delphi SOAP TwebreResponse? 或者(更好)重写响应的序列化


我需要从自定义序列化程序(我已经拥有)创建响应对象,并希望将此XML序列化传递给客户端。

不确定这是否有帮助,但每当我需要修改SOAP响应的某些输出时,我都会这样做: 我使用的是DELPHI XE2,在我的webmodule所在的单元中,有一个HTTPSoapPascalInvoker1。 在ObjectInspector中,我创建了一个AfterDispatchevent,它看起来像:

procedure TWebModule1.HTTPSoapPascalInvoker1AfterDispatchEvent( const MethodName: string; SOAPResponse: TStream);
在这个事件中,我现在可以实际检查流的内容,并根据需要修改流。
希望这有帮助。

在处理当前请求并创建自定义XML并将其写入响应后,您还可以使用event
TWebModule.OnBeforeDispatch
并将
Handled
设置为
true

procedure TWebModule1.WebModuleBeforeDispatch(Sender: TObject; Request:
    TWebRequest; Response: TWebResponse; var Handled: Boolean);
var
  str: TStream;
begin
  str:= TMemoryStream.Create;
  try
    MyCustomRequestProcessing(Request, str);
    Response.SendStream(str);
    Handled := True;
  finally
    str.Free;
  end;
end;