覆盖Delphi SOAP响应

时间:2014-05-10 09:21:13

标签: delphi soap web serializer

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

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

2 个答案:

答案 0 :(得分:0)

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

procedure TWebModule1.HTTPSoapPascalInvoker1AfterDispatchEvent( const MethodName: string; SOAPResponse: TStream);

在此事件中,我现在可以实际检查流的内容,并根据需要修改流。 希望这会有所帮助。

答案 1 :(得分:0)

在处理当前请求并创建自定义XML并将其写入响应后,您还可以使用事件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;