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