.NET SOAP Web Service 客户端和 Borland SOAP 服务器





5.00/5 (2投票s)
如果你使用 Borland Delphi 创建了一个 SOAP 服务器,并使用 .NET 创建了一个 SOAP 客户端,那么你将无法直接运行。
如果你使用 Borland Delphi 创建了一个 SOAP 服务器,并使用 .NET 创建了一个 SOAP 客户端,那么你将无法直接运行。客户端会发生反序列化错误。需要在 SOAP 服务器上进行一些更改,使其与 .NET 客户端兼容。
- 你需要进入 SOAP Web 模块,选择
HTTPSoapPascalInvoker
,并确保选项 "soRootRefNodesToBody
" 为true
。 - 如果在你的
TRemotable
对象中包含DateTime
字段,那么你需要像这样重写ObjectToSOAP
函数(因为如果不这样做,反序列化器将直接跳过DateTime
字段)
BillInfoType = class(TRemotable)
...
function BillInfoType.ObjectToSOAP(RootNode, ParentNode: IXMLNode;
const ObjConverter: IObjConverter; const Name,
URI: InvString; ObjConvOpts: TObjectConvertOptions;
out RefID: InvString): IXMLNode;
begin
ObjConvOpts := ObjConvOpts + [ocoDontPrefixNode];
result := inherited ObjectToSOAP(RootNode, ParentNode, ObjConverter, Name, URI, ObjConvOpts, RefID);
end;
祝您好运!