是否可以在SOAP Web应用程序中覆盖Delphi SOAP TWebResponse ? 或者(更好)覆盖响应的序列化?
我需要从自定义序列化程序(我已经拥有)创建响应对象,并且我希望将此XML序列化传递给客户端。
答案 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;