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

D

Datura

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://tempuri.org/Da
vinci/action/Gateway.Perform",
RequestNamespace="http://tempuri.org/Davinci/message/",
ResponseNamespace="http://tempuri.org/Davinci/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/envelope/"
SOAPENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">

<SOAPSDK4:performResponse
xmlns:SOAPSDK4="http://tempuri.org/Davinci/message/">

<Result>true</Result>

<vntReturn
xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance"
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>
 
D

Dino Chiesa [MSFT]

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/tcptrace/pt.aspx

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 said:
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://tempuri.org/Da
vinci/action/Gateway.Perform",
RequestNamespace="http://tempuri.org/Davinci/message/",
ResponseNamespace="http://tempuri.org/Davinci/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/envelope/"
SOAPENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">

<SOAPSDK4:performResponse
xmlns:SOAPSDK4="http://tempuri.org/Davinci/message/">

<Result>true</Result>

<vntReturn
xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance"
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>
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,989
Messages
2,570,207
Members
46,782
Latest member
ThomasGex

Latest Threads

Top