关于Web Service中关于动态数组的问题(200分)

  • 主题发起人 主题发起人 木木
  • 开始时间 开始时间

木木

Unregistered / Unconfirmed
GUEST, unregistred user!
近来在研究李维的《Delphi 6/Kylix 2 SOAP/Web Service程序设计篇》,碰到这个问题,
(在第8章,AVI播放器)接口使用了动态数组(如TStringDynArray)后,编译通过,但是
客户端调用就报错:
Invalid WSDL document 'http://localhost:1024/DynArrayServer.DynArrayDemoServer
/wsdl/IDynArrayDemoServer'-please verify the location and content
Error:XML文档必须包含一个顶层元素
Line:0
我使用的是书上提供的例子,所以应该不会在编码有错吧!哪位大哥切实解决200再加200
 
没人回答吗?那么SOAP高手呢?
 
与动态数组等无关,你的wsdl地址不对,返回的不是一个soap包.
 
但是我的接口中的函数如果返回普通类型如Integer, String等就没有该问题!如果返回TStringDynArray等动态数组就回出现错误!应该和wsdl的地址无关吧!
 
我在java写的服务中用过Integer数组,导入到delphi中就是integer动态数组,没有任何问题,至于String数组,我倒还没试过,以后也会用的
 
是TIntegerDynArray类型吗?
我在一个原来可以找到wsdl和正常执行的程序中增加了一个返回值为动态数组类型的函数,执行时仍然会报上述错误!
 
主要代码贴给你看看,没有问题的, 
我想你的问题应该不是在数组参数,而是返回的wsdl根本不是正确的,你查看一下返回的wsdl服务声明就能看个明白
-----
web服务接口方法:
ArrayOffint = array of Integer; { "null" }
function addOnePopeGroup(const entityCode: WideString; const pope: ArrayOffint; const description: WideString): WideString; stdcall;

RemClassRegistry.RegisterXSInfo(TypeInfo(ArrayOffint), 'null', 'ArrayOffint');

客户端:
currPope: ArrayOffint;
SetLength(currPope, 6);
currPope[0] := ....

iPg.updateOnePopeGroup(mainfrm.iniEntityCode,
currPope, descEdit.Text, oldId);
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
545
import
I
后退
顶部