65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIconstarIconstarIconstarIcon

5.00/5 (2投票s)

2011年6月3日

CPOL
viewsIcon

17975

如果你使用 Borland Delphi 创建了一个 SOAP 服务器,并使用 .NET 创建了一个 SOAP 客户端,那么你将无法直接运行。

如果你使用 Borland Delphi 创建了一个 SOAP 服务器,并使用 .NET 创建了一个 SOAP 客户端,那么你将无法直接运行。客户端会发生反序列化错误。需要在 SOAP 服务器上进行一些更改,使其与 .NET 客户端兼容。

  1. 你需要进入 SOAP Web 模块,选择 HTTPSoapPascalInvoker,并确保选项 "soRootRefNodesToBody" 为 true
  2. 如果在你的 TRemotable 对象中包含 DateTime 字段,那么你需要像这样重写 ObjectToSOAP 函数(因为如果不这样做,反序列化器将直接跳过 DateTime 字段)
  3. 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;

祝您好运!

© . All rights reserved.