[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

microsoft.public.dotnet.framework.aspnet.webservices

How to write c# proxy class to get at this data?

Datura

8/28/2003 11:31:00 PM

Hi, I'm trying to use a wdsl generated proxy class to Invoke a web services
method which outputs a soap envelope shown below.



The response I'm looking for has two parts, one is a "Result" node, which I
am successful in getting back, the other is the "vntReturn" node, which I
know is being sent, but the Invoke method is not returning.



The problem seems to be that the Invoke method simply is returning only one
value, that found in the "Return" node. The attempt to assign vntReturn
from results[1] gives a run-time error of array index out-of-bounds.



Here's the proxy class code:




[System.Web.Services.Protocols.SoapRpcMethodAttribute("http://temp...
vinci/action/Gateway.Perform",
RequestNamespace="http://temp...vinci/message/",
ResponseNamespace="http://temp...vinci/message/")]
[return: System.Xml.Serialization.SoapElementAttribute("Result")]
public string Perform(string vntReceive, string vntReturn) {
object[] results = this.Invoke("Perform", new object[] {
vntReceive,
vntReturn});
vntReturn = ((string)(results[1]));
/return ((string)(results[0]));
}


Any help or pointers greatly appreciated!



Thanks!





<SOAP-ENV:Body xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envel...
SOAPENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/...

<SOAPSDK4:PerformResponse
xmlns:SOAPSDK4="http://temp...vinci/message/">

<Result>true</Result>

<vntReturn
xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-inst...
SOAPSDK2:type="SOAPSDK1:string">

&lt;body&gt;


&lt;security_user_id&gt;&lt;![CDATA[5]]&gt;&lt;/security_user_id&gt;


&lt;security_group_id&gt;&lt;![CDATA[1]]&gt;&lt;/security_group_id&gt;


&lt;security_group_descr_short&gt;&lt;![CDATA[MTG]]&gt;&lt;/security_group_d
escr_short&gt;


&lt;user_name&gt;&lt;![CDATA[James Carmichael]]&gt;&lt;/user_name&gt;


&lt;user_logon&gt;&lt;![CDATA[CARMICHAELJ]]&gt;&lt;/user_logon&gt;


&lt;error_level_id&gt;&lt;![CDATA[2]]&gt;&lt;/error_level_id&gt;


&lt;mts_server_name&gt;&lt;![CDATA[D01SVR84]]&gt;&lt;/mts_server_name&gt;


&lt;db_server_name&gt;&lt;![CDATA[D01SVR82]]&gt;&lt;/db_server_name&gt;


&lt;db_name&gt;&lt;![CDATA[rccl_qa]]&gt;&lt;/db_name&gt;


&lt;international_rep_ind&gt;&lt;![CDATA[0]]&gt;&lt;/international_rep_ind&g
t;


&lt;ir_country_code&gt;&lt;![CDATA[]]&gt;&lt;/ir_country_code&gt;


&lt;session_id&gt;&lt;![CDATA[{CB415EAD-7F2A-42E6-B715-C0F3FDE284B8}]]&gt;&l
t;/session_id&gt;

&lt;/body&gt;

</vntReturn>

</SOAPSDK4:PerformResponse>

</SOAP-ENV:Body>




1 Answer

Dino Chiesa [MSFT]

8/29/2003 3:29:00 PM

0

Index out of bounds means the array you are indexing does not include the
element you are attempting to access. It seems likely that the results
array has just one element?

Have you traced the SOAP on the wire?
eg, with proxytrace? http://www.pocketsoap.com/tcptra...

What do you see, can you post it ?

Also, Why are you modifying the generated proxy? Shouldn't you just USE
the generated proxy?

-Dino


can you show us
"Datura" <nospam@stopspam.com> wrote in message
news:ugw3b.3205020$mA4.438947@news.easynews.com...
> Hi, I'm trying to use a wdsl generated proxy class to Invoke a web
services
> method which outputs a soap envelope shown below.
>
>
>
> The response I'm looking for has two parts, one is a "Result" node, which
I
> am successful in getting back, the other is the "vntReturn" node, which I
> know is being sent, but the Invoke method is not returning.
>
>
>
> The problem seems to be that the Invoke method simply is returning only
one
> value, that found in the "Return" node. The attempt to assign vntReturn
> from results[1] gives a run-time error of array index out-of-bounds.
>
>
>
> Here's the proxy class code:
>
>
>
>
>
[System.Web.Services.Protocols.SoapRpcMethodAttribute("http://temp...
> vinci/action/Gateway.Perform",
> RequestNamespace="http://temp...vinci/message/",
> ResponseNamespace="http://temp...vinci/message/")]
> [return: System.Xml.Serialization.SoapElementAttribute("Result")]
> public string Perform(string vntReceive, string vntReturn) {
> object[] results = this.Invoke("Perform", new object[] {
> vntReceive,
> vntReturn});
> vntReturn = ((string)(results[1]));
> /return ((string)(results[0]));
> }
>
>
> Any help or pointers greatly appreciated!
>
>
>
> Thanks!
>
>
>
>
>
> <SOAP-ENV:Body xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envel...
> SOAPENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/...
>
> <SOAPSDK4:PerformResponse
> xmlns:SOAPSDK4="http://temp...vinci/message/">
>
> <Result>true</Result>
>
> <vntReturn
> xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-inst...
> SOAPSDK2:type="SOAPSDK1:string">
>
> &lt;body&gt;
>
>
> &lt;security_user_id&gt;&lt;![CDATA[5]]&gt;&lt;/security_user_id&gt;
>
>
> &lt;security_group_id&gt;&lt;![CDATA[1]]&gt;&lt;/security_group_id&gt;
>
>
>
&lt;security_group_descr_short&gt;&lt;![CDATA[MTG]]&gt;&lt;/security_group_d
> escr_short&gt;
>
>
> &lt;user_name&gt;&lt;![CDATA[James Carmichael]]&gt;&lt;/user_name&gt;
>
>
> &lt;user_logon&gt;&lt;![CDATA[CARMICHAELJ]]&gt;&lt;/user_logon&gt;
>
>
> &lt;error_level_id&gt;&lt;![CDATA[2]]&gt;&lt;/error_level_id&gt;
>
>
> &lt;mts_server_name&gt;&lt;![CDATA[D01SVR84]]&gt;&lt;/mts_server_name&gt;
>
>
> &lt;db_server_name&gt;&lt;![CDATA[D01SVR82]]&gt;&lt;/db_server_name&gt;
>
>
> &lt;db_name&gt;&lt;![CDATA[rccl_qa]]&gt;&lt;/db_name&gt;
>
>
>
&lt;international_rep_ind&gt;&lt;![CDATA[0]]&gt;&lt;/international_rep_ind&g
> t;
>
>
> &lt;ir_country_code&gt;&lt;![CDATA[]]&gt;&lt;/ir_country_code&gt;
>
>
>
&lt;session_id&gt;&lt;![CDATA[{CB415EAD-7F2A-42E6-B715-C0F3FDE284B8}]]&gt;&l
> t;/session_id&gt;
>
> &lt;/body&gt;
>
> </vntReturn>
>
> </SOAPSDK4:PerformResponse>
>
> </SOAP-ENV:Body>
>
>
>
>