调用servics时数组如何返回 ( 积分: 40 )

  • 主题发起人 主题发起人 noall
  • 开始时间 开始时间
N

noall

Unregistered / Unconfirmed
GUEST, unregistred user!
服务端这样:用dotnet写<br>定义了一个结构体:<br>public&nbsp;struct&nbsp;ClientData<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;String&nbsp;Name;<br>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;int&nbsp;ID;<br>}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;[WebMethod(CacheDuration&nbsp;=&nbsp;30,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Description&nbsp;=&nbsp;&quot;返回客户记录&quot;)]<br><br>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;ClientData[]&nbsp;GetClientData111(int&nbsp;Number)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ClientData[]&nbsp;Clients&nbsp;=&nbsp;null;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(Number&nbsp;&gt;&nbsp;0&nbsp;&amp;&amp;&nbsp;Number&nbsp;&lt;=&nbsp;10)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Clients&nbsp;=&nbsp;new&nbsp;ClientData[Number];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;Number;&nbsp;i++)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Clients.Name&nbsp;=&nbsp;&quot;Client&nbsp;&quot;&nbsp;+&nbsp;i.ToString();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Clients.ID&nbsp;=&nbsp;i;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;Clients;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br><br><br>客户端调用:用bds2006写:<br>这样:<br>不知道如何写:返回的数组长度无法定义,如何接收呢???<br><br>var&nbsp;call1:ServiceSoap;<br>&nbsp;&nbsp;CallCleint:ArrayOfClientData;<br>&nbsp;&nbsp;i:Integer;<br>begin<br>&nbsp;&nbsp;call1:=GetServiceSoap();<br>&nbsp;&nbsp;CallCleint:=call1.GetClientData(3);<br>&nbsp;&nbsp;for&nbsp;I&nbsp;:=&nbsp;Low(CallCleint)&nbsp;to&nbsp;High(CallCleint)&nbsp;do<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ShowMessage(Format('%s&nbsp;&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;%d',[CallCleint.Name_,&nbsp;CallCleint.ID]));<br>end;<br>编译可以通过...但运行到这里时.有问题;
 
什么问题
 
CallCleint:=call1.GetClientData(3);<br>运行到这里会提示错识<br><br>SOAP&nbsp;Response&nbsp;Packet:result&nbsp;element&nbsp;expected,received&nbsp;&quot;&lt;GetClientDataResponse&nbsp;xmlns=&quot;http://192.168.0.150/aa&quot;/&gt;.<br><br><br>servics放在http://192.168.0.150/aa<br><br>不知什么原因
 
那天我发给你的代码你不是通过了吗.怎么会又出了问题
 
是编译时通过了啊...没有实际的调用出来....<br>以为是可以了..后来应用时是不行的啊....
 
我这边都是可以的啊.你要不重新建一个C#和Delphi的工程试一下
 
其中调用HelloWorld是没问题..但一调用那个&nbsp;&nbsp;R&nbsp;:=&nbsp;Intf.GetClientData(5);时就有问题...<br><br>我是这样做的:<br>在vs2005里新建一个网站..然后再增加一个WebService1.asmx.WebService1.asmx里的代码:&lt;%@&nbsp;WebService&nbsp;Language=&quot;C#&quot;&nbsp;CodeBehind=&quot;~/App_Code/WebService1.cs&quot;&nbsp;Class=&quot;WebService1.WTest&quot;&nbsp;%&gt;<br><br><br>WebService1.cs文件中的代码:<br>using&nbsp;System;<br>using&nbsp;System.Web;<br>using&nbsp;System.Collections;<br>using&nbsp;System.Web.Services;<br>using&nbsp;System.Web.Services.Protocols;<br><br><br>using&nbsp;System.ComponentModel;<br>using&nbsp;System.Data;<br>using&nbsp;System.Diagnostics;<br><br><br>namespace&nbsp;WebService1<br>{<br><br>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;struct&nbsp;ClientData<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;String&nbsp;Name;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;int&nbsp;ID;<br>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;&lt;summary&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;WebService1&nbsp;的摘要说明<br>&nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;&lt;/summary&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;[WebService(Namespace&nbsp;=&nbsp;&quot;http://tempuri.org/&quot;)]<br>&nbsp;&nbsp;&nbsp;&nbsp;[WebServiceBinding(ConformsTo&nbsp;=&nbsp;WsiProfiles.BasicProfile1_1)]<br><br><br><br>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;class&nbsp;WTest&nbsp;:&nbsp;System.Web.Services.WebService<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;WTest()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//如果使用设计的组件,请取消注释以下行&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InitializeComponent();&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#region&nbsp;组件设计器生成的代码<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;IContainer&nbsp;components&nbsp;=&nbsp;null;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;void&nbsp;InitializeComponent()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;&lt;summary&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;清理所有正在使用的资源。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;&lt;/summary&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp;override&nbsp;void&nbsp;Dispose(bool&nbsp;disposing)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(disposing&nbsp;&amp;&amp;&nbsp;components&nbsp;!=&nbsp;null)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;components.Dispose();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;base.Dispose(disposing);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#endregion<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[WebMethod]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;string&nbsp;HelloWorld()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;&quot;Hello&nbsp;World&quot;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[WebMethod(CacheDuration&nbsp;=&nbsp;30,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Description&nbsp;=&nbsp;&quot;返回客户记录&quot;)]<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;ClientData[]&nbsp;GetClientData(int&nbsp;Number)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ClientData[]&nbsp;Clients&nbsp;=&nbsp;null;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(Number&nbsp;&gt;&nbsp;0&nbsp;&amp;&amp;&nbsp;Number&nbsp;&lt;=&nbsp;10)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Clients&nbsp;=&nbsp;new&nbsp;ClientData[Number];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;Number;&nbsp;i++)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Clients.Name&nbsp;=&nbsp;&quot;Client&nbsp;&quot;&nbsp;+&nbsp;i.ToString();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Clients.ID&nbsp;=&nbsp;i;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;Clients;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>}<br><br>在bds里新建vcl&nbsp;forms&nbsp;application&nbsp;fro&nbsp;delphi&nbsp;win32,然后导入wsdl,代码:<br>//&nbsp;************************************************************************&nbsp;//<br>//&nbsp;The&nbsp;types&nbsp;declared&nbsp;in&nbsp;this&nbsp;file&nbsp;were&nbsp;generated&nbsp;from&nbsp;data&nbsp;read&nbsp;from&nbsp;the<br>//&nbsp;WSDL&nbsp;File&nbsp;described&nbsp;below:<br>//&nbsp;WSDL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;http://localhost/webtest/WebService1.asmx?wsdl<br>//&nbsp;Encoding&nbsp;:&nbsp;utf-8<br>//&nbsp;Version&nbsp;&nbsp;:&nbsp;1.0<br>//&nbsp;(2007-3-30&nbsp;8:58:25&nbsp;-&nbsp;16.03.2006)<br>//&nbsp;************************************************************************&nbsp;//<br><br>unit&nbsp;WebService1;<br><br>interface<br><br>uses&nbsp;InvokeRegistry,&nbsp;SOAPHTTPClient,&nbsp;Types,&nbsp;XSBuiltIns;<br><br>type<br><br>&nbsp;&nbsp;//&nbsp;************************************************************************&nbsp;//<br>&nbsp;&nbsp;//&nbsp;The&nbsp;following&nbsp;types,&nbsp;referred&nbsp;to&nbsp;in&nbsp;the&nbsp;WSDL&nbsp;document&nbsp;are&nbsp;not&nbsp;being&nbsp;represented<br>&nbsp;&nbsp;//&nbsp;in&nbsp;this&nbsp;file.&nbsp;They&nbsp;are&nbsp;either&nbsp;aliases[@]&nbsp;of&nbsp;other&nbsp;types&nbsp;represented&nbsp;or&nbsp;were&nbsp;referred<br>&nbsp;&nbsp;//&nbsp;to&nbsp;but&nbsp;never[!]&nbsp;declared&nbsp;in&nbsp;the&nbsp;document.&nbsp;The&nbsp;types&nbsp;from&nbsp;the&nbsp;latter&nbsp;category<br>&nbsp;&nbsp;//&nbsp;typically&nbsp;map&nbsp;to&nbsp;predefined/known&nbsp;XML&nbsp;or&nbsp;Borland&nbsp;types;&nbsp;however,&nbsp;they&nbsp;could&nbsp;also&nbsp;<br>&nbsp;&nbsp;//&nbsp;indicate&nbsp;incorrect&nbsp;WSDL&nbsp;documents&nbsp;that&nbsp;failed&nbsp;to&nbsp;declare&nbsp;or&nbsp;import&nbsp;a&nbsp;schema&nbsp;type.<br>&nbsp;&nbsp;//&nbsp;************************************************************************&nbsp;//<br>&nbsp;&nbsp;//&nbsp;!:string&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;&quot;http://www.w3.org/2001/XMLSchema&quot;<br>&nbsp;&nbsp;//&nbsp;!:int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;&quot;http://www.w3.org/2001/XMLSchema&quot;<br><br>&nbsp;&nbsp;ClientData&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;class;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&quot;http://tempuri.org/&quot;&nbsp;}<br><br>&nbsp;&nbsp;ArrayOfClientData&nbsp;=&nbsp;array&nbsp;of&nbsp;ClientData;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&quot;http://tempuri.org/&quot;&nbsp;}<br><br><br>&nbsp;&nbsp;//&nbsp;************************************************************************&nbsp;//<br>&nbsp;&nbsp;//&nbsp;Namespace&nbsp;:&nbsp;http://tempuri.org/<br>&nbsp;&nbsp;//&nbsp;************************************************************************&nbsp;//<br>&nbsp;&nbsp;ClientData&nbsp;=&nbsp;class(TRemotable)<br>&nbsp;&nbsp;private<br>&nbsp;&nbsp;&nbsp;&nbsp;FName_:&nbsp;WideString;<br>&nbsp;&nbsp;&nbsp;&nbsp;FID:&nbsp;Integer;<br>&nbsp;&nbsp;published<br>&nbsp;&nbsp;&nbsp;&nbsp;property&nbsp;Name_:&nbsp;WideString&nbsp;read&nbsp;FName_&nbsp;write&nbsp;FName_;<br>&nbsp;&nbsp;&nbsp;&nbsp;property&nbsp;ID:&nbsp;Integer&nbsp;read&nbsp;FID&nbsp;write&nbsp;FID;<br>&nbsp;&nbsp;end;<br><br><br>&nbsp;&nbsp;//&nbsp;************************************************************************&nbsp;//<br>&nbsp;&nbsp;//&nbsp;Namespace&nbsp;:&nbsp;http://tempuri.org/<br>&nbsp;&nbsp;//&nbsp;soapAction:&nbsp;http://tempuri.org/%operationName%<br>&nbsp;&nbsp;//&nbsp;transport&nbsp;:&nbsp;http://schemas.xmlsoap.org/soap/http<br>&nbsp;&nbsp;//&nbsp;binding&nbsp;&nbsp;&nbsp;:&nbsp;WTestSoap<br>&nbsp;&nbsp;//&nbsp;service&nbsp;&nbsp;&nbsp;:&nbsp;WTest<br>&nbsp;&nbsp;//&nbsp;port&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;WTestSoap<br>&nbsp;&nbsp;//&nbsp;URL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;http://localhost/webtest/WebService1.asmx<br>&nbsp;&nbsp;//&nbsp;************************************************************************&nbsp;//<br>&nbsp;&nbsp;WTestSoap&nbsp;=&nbsp;interface(IInvokable)<br>&nbsp;&nbsp;['{6D9F3B0C-30AC-C377-BE76-BE658939B2D2}']<br>&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;&nbsp;HelloWorld:&nbsp;WideString;&nbsp;stdcall;<br>&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;&nbsp;GetClientData(const&nbsp;Number:&nbsp;Integer):&nbsp;ArrayOfClientData;&nbsp;stdcall;<br>&nbsp;&nbsp;end;<br><br>function&nbsp;GetWTestSoap(UseWSDL:&nbsp;Boolean=System.False;&nbsp;Addr:&nbsp;string='';&nbsp;HTTPRIO:&nbsp;THTTPRIO&nbsp;=&nbsp;nil):&nbsp;WTestSoap;<br><br><br>implementation<br><br>function&nbsp;GetWTestSoap(UseWSDL:&nbsp;Boolean;&nbsp;Addr:&nbsp;string;&nbsp;HTTPRIO:&nbsp;THTTPRIO):&nbsp;WTestSoap;<br>const<br>&nbsp;&nbsp;defWSDL&nbsp;=&nbsp;'http://localhost/webtest/WebService1.asmx?wsdl';<br>&nbsp;&nbsp;defURL&nbsp;&nbsp;=&nbsp;'http://localhost/webtest/WebService1.asmx';<br>&nbsp;&nbsp;defSvc&nbsp;&nbsp;=&nbsp;'WTest';<br>&nbsp;&nbsp;defPrt&nbsp;&nbsp;=&nbsp;'WTestSoap';<br>var<br>&nbsp;&nbsp;RIO:&nbsp;THTTPRIO;<br>begin<br>&nbsp;&nbsp;Result&nbsp;:=&nbsp;nil;<br>&nbsp;&nbsp;if&nbsp;(Addr&nbsp;=&nbsp;'')&nbsp;then<br>&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;UseWSDL&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Addr&nbsp;:=&nbsp;defWSDL<br>&nbsp;&nbsp;&nbsp;&nbsp;else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Addr&nbsp;:=&nbsp;defURL;<br>&nbsp;&nbsp;end;<br>&nbsp;&nbsp;if&nbsp;HTTPRIO&nbsp;=&nbsp;nil&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;RIO&nbsp;:=&nbsp;THTTPRIO.Create(nil)<br>&nbsp;&nbsp;else<br>&nbsp;&nbsp;&nbsp;&nbsp;RIO&nbsp;:=&nbsp;HTTPRIO;<br>&nbsp;&nbsp;try<br>&nbsp;&nbsp;&nbsp;&nbsp;Result&nbsp;:=&nbsp;(RIO&nbsp;as&nbsp;WTestSoap);<br>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;UseWSDL&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RIO.WSDLLocation&nbsp;:=&nbsp;Addr;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RIO.Service&nbsp;:=&nbsp;defSvc;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RIO.Port&nbsp;:=&nbsp;defPrt;<br>&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RIO.URL&nbsp;:=&nbsp;Addr;<br>&nbsp;&nbsp;finally<br>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(Result&nbsp;=&nbsp;nil)&nbsp;and&nbsp;(HTTPRIO&nbsp;=&nbsp;nil)&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RIO.Free;<br>&nbsp;&nbsp;end;<br>end;<br><br><br>initialization<br>&nbsp;&nbsp;InvRegistry.RegisterInterface(TypeInfo(WTestSoap),&nbsp;'http://tempuri.org/',&nbsp;'utf-8');<br>&nbsp;&nbsp;InvRegistry.RegisterDefaultSOAPAction(TypeInfo(WTestSoap),&nbsp;'http://tempuri.org/%operationName%');<br>&nbsp;&nbsp;RemClassRegistry.RegisterXSInfo(TypeInfo(ArrayOfClientData),&nbsp;'http://tempuri.org/',&nbsp;'ArrayOfClientData');<br>&nbsp;&nbsp;RemClassRegistry.RegisterXSClass(ClientData,&nbsp;'http://tempuri.org/',&nbsp;'ClientData');<br>&nbsp;&nbsp;RemClassRegistry.RegisterExternalPropName(TypeInfo(ClientData),&nbsp;'Name_',&nbsp;'Name');<br><br>end.<br><br>调用时:<br><br>procedure&nbsp;TForm1.Button1Click(Sender:&nbsp;TObject);<br>var<br>&nbsp;&nbsp;Intf&nbsp;:&nbsp;WTestSoap;<br>&nbsp;&nbsp;R&nbsp;:&nbsp;ArrayOfClientData;<br>&nbsp;&nbsp;I:Integer;<br>begin<br>&nbsp;&nbsp;Intf&nbsp;:=&nbsp;GetWTestSoap();<br>&nbsp;&nbsp;R&nbsp;:=&nbsp;Intf.GetClientData(2);<br>&nbsp;&nbsp;for&nbsp;I&nbsp;:=&nbsp;Low(R)&nbsp;to&nbsp;High(R)&nbsp;do<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ShowMessage(Format('%s&nbsp;&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;%d',[R.Name_,&nbsp;R.ID]));<br>end;<br><br>procedure&nbsp;TForm1.Button2Click(Sender:&nbsp;TObject);<br>var<br>&nbsp;&nbsp;Intf&nbsp;:&nbsp;WTestSoap;<br>begin<br>&nbsp;&nbsp;Intf&nbsp;:=&nbsp;GetWTestSoap();<br>&nbsp;&nbsp;ShowMessage(&nbsp;Intf.HelloWorld);<br>end;<br><br>其中调用HelloWorld是没问题..但一调用那个&nbsp;&nbsp;R&nbsp;:=&nbsp;Intf.GetClientData(2);时就有问题...
 
重新生成一个c#工程和dELPHI工程了..<br>还是有问题&gt;&gt;&gt;
 
与BDS2006的补丁有关系吗??
 
还是不行啊..<br><br>但如果用C#&nbsp;本身调用是可行的..<br>用的bds2006的版本是:<br>Borland&amp;reg;&nbsp;Developer&nbsp;Studio&nbsp;for&nbsp;Microsoft&amp;reg;&nbsp;Windows&amp;#8482;&nbsp;Version&nbsp;10.0.2558.35231&nbsp;Update&nbsp;2,&nbsp;Hotfixed&nbsp;Copyright&nbsp;&amp;copy;&nbsp;2005&nbsp;Borland&amp;reg;&nbsp;Software&nbsp;Corporation.&nbsp;All&nbsp;Rights&nbsp;Reserved.<br>快晕了..今天天气又这么热....
 
wr960204:你是用delphi中的C#还是用vs呢?<br>我是用vs啊....呵....
 
我服务端用的是VS.NET2003的C#.<br>客户端Delphi2006.<br>一点问题都没有啊.晕死
 
接受答案了.
 
后退
顶部