Hello,
I have webservice created with Axis 1.2.1 and that I am trying to
consuming in .NET (VB) using the Microsoft provided tools. While I am
able to consume methods on the service that return simple type, I
cannot consume methods that return complex objects. I have tried
experimenting, with this, but am at a bit of loss on where the problem
lies. When I call the services from a browser, I do get back the
response that contains valid data. Any help on this would be greatly
appreciated. I have attached supporting files. For the purpose of an
example, I have used the getLogin() method.
Thanks in advance.
Leslie
--------------WSDL:-----------------
<wsdl:definitio ns
targetNamespace ="http://localhost:9082/axis/services/AuthLogin"
xmlns:apachesoa p="http://xml.apache.org/xml-soap"
xmlns:impl="htt p://localhost:9082/axis/services/AuthLogin"
xmlns:intf="htt p://localhost:9082/axis/services/AuthLogin"
xmlns:tns1="urn :AuthLogin" xmlns:tns2="htt p://security.ws.dia melle"
xmlns:wsdl="htt p://schemas.xmlsoap .org/wsdl/"
xmlns:wsdlsoap= "http://schemas.xmlsoap .org/wsdl/soap/"
xmlns:xsd="http ://www.w3.org/2001/XMLSchema">
<!--WSDL created by Apache Axis version: 1.2.1
Built on Jun 14, 2005 (09:15:57 EDT)-->
<wsdl:types>
<schema elementFormDefa ult="qualified"
targetNamespace ="urn:AuthLogin "
xmlns="http://www.w3.org/2001/XMLSchema">
<import namespace="http ://xml.apache.org/xml-soap"/>
<import namespace="http ://localhost:9082/axis/services/AuthLogin"/>
<element name="authentic ate">
<complexType>
<sequence>
<element name="serviceId " type="xsd:strin g"/>
<element name="login" type="xsd:strin g"/>
<element name="password" type="xsd:strin g"/>
</sequence>
</complexType>
</element>
<element name="authentic ateResponse">
<complexType>
<sequence>
<element name="authentic ateResponse" type="tns1:SSOS ubject"/>
</sequence>
</complexType>
</element>
<complexType name="SSOSubjec t">
<sequence>
<element name="authentic atingAuthority" nillable="true"
type="xsd:strin g"/>
<element name="entitleme nts" nillable="true"
type="impl:Arra yOf_xsd_anyType "/>
<element name="expiratio nTime" type="xsd:long"/>
<element name="permissio ns" nillable="true"
type="impl:Arra yOf_xsd_anyType "/>
<element name="principal s" nillable="true"
type="impl:Arra yOf_xsd_anyType "/>
<element name="privateCr edentials" nillable="true"
type="impl:Arra yOf_xsd_anyType "/>
<element name="publicCre dentials" nillable="true"
type="impl:Arra yOf_xsd_anyType "/>
<element name="readOnly" type="xsd:boole an"/>
<element name="userACLs" nillable="true"
type="impl:Arra yOf_xsd_anyType "/>
<element name="userGroup s" nillable="true"
type="impl:Arra yOf_xsd_anyType "/>
<element name="userId" nillable="true" type="xsd:strin g"/>
<element name="userRoles " nillable="true"
type="impl:Arra yOf_xsd_anyType "/>
</sequence>
</complexType>
<element name="getUserId ">
<complexType>
<sequence>
<element name="serviceId " type="xsd:strin g"/>
<element name="login" type="xsd:strin g"/>
<element name="password" type="xsd:strin g"/>
</sequence>
</complexType>
</element>
<element name="getUserId Response">
<complexType>
<sequence>
<element name="getUserId Response" type="xsd:strin g"/>
</sequence>
</complexType>
</element>
<element name="autoReset Password">
<complexType>
<sequence>
<element name="serviceId " type="xsd:strin g"/>
<element name="login" type="xsd:strin g"/>
</sequence>
</complexType>
</element>
<element name="autoReset PasswordRespons e">
<complexType>
<sequence>
<element name="autoReset PasswordRespons e" type="xsd:strin g"/>
</sequence>
</complexType>
</element>
<element name="getLogin" >
<complexType>
<sequence>
<element name="serviceId " type="xsd:strin g"/>
<element name="login" type="xsd:strin g"/>
</sequence>
</complexType>
</element>
<element name="getLoginR esponse">
<complexType>
<sequence>
<element name="getLoginR esponse" type="tns1:WSLo ginValue"/>
</sequence>
</complexType>
</element>
<complexType name="WSLoginVa lue">
<sequence>
<element name="authFailu reCount" type="xsd:int"/>
<element name="changePas sword" nillable="true"
type="xsd:dateT ime"/>
<element name="createDat e" nillable="true" type="xsd:dateT ime"/>
<element name="createdBy " nillable="true" type="xsd:strin g"/>
<element name="currentLo ginHost" nillable="true"
type="xsd:strin g"/>
<element name="gracePeri odExp" nillable="true"
type="xsd:dateT ime"/>
<element name="guest" type="xsd:boole an"/>
<element name="lastAuthA ttempt" nillable="true"
type="xsd:dateT ime"/>
<element name="locked" type="xsd:boole an"/>
<element name="login" nillable="true" type="xsd:strin g"/>
<element name="newUser" type="xsd:boole an"/>
<element name="password" nillable="true" type="xsd:strin g"/>
<element name="passwordE quivalentToken" nillable="true"
type="xsd:strin g"/>
<element name="passwordE xp" nillable="true" type="xsd:dateT ime"/>
<element name="resetPass word" type="xsd:boole an"/>
<element name="service" nillable="true" type="xsd:strin g"/>
<element name="status" nillable="true" type="xsd:strin g"/>
<element name="token" nillable="true" type="xsd:strin g"/>
<element name="userId" nillable="true" type="xsd:strin g"/>
</sequence>
</complexType>
<element name="removeLog in">
<complexType>
<sequence>
<element name="serviceId " type="xsd:strin g"/>
<element name="loginId" type="xsd:strin g"/>
</sequence>
</complexType>
</element>
<element name="removeLog inResponse">
<complexType/>
</element>
<element name="getAllLog ins">
<complexType>
<sequence>
<element name="userId" type="xsd:strin g"/>
</sequence>
</complexType>
</element>
<element name="getAllLog insResponse">
<complexType>
<sequence>
<element name="getAllLog insResponse"
type="tns1:Arra yOfSSOPrincipal "/>
</sequence>
</complexType>
</element>
<complexType name="ArrayOfSS OPrincipal">
<sequence>
<element maxOccurs="unbo unded" minOccurs="0" name="item"
type="xsd:anyTy pe"/>
</sequence>
</complexType>
<element name="getPrinci pals">
<complexType>
<sequence>
<element name="userId" type="xsd:strin g"/>
</sequence>
</complexType>
</element>
<element name="getPrinci palsResponse">
<complexType>
<sequence>
<element name="getPrinci palsReturn"
type="tns1:Arra yOfSSOPrincipal "/>
</sequence>
</complexType>
</element>
</schema>
<schema elementFormDefa ult="qualified"
targetNamespace ="http://localhost:9082/axis/services/AuthLogin"
xmlns="http://www.w3.org/2001/XMLSchema">
<import namespace="http ://xml.apache.org/xml-soap"/>
<import namespace="urn: AuthLogin"/>
<complexType name="ArrayOf_x sd_anyType">
<sequence>
<element maxOccurs="unbo unded" minOccurs="0" name="item"
type="xsd:anyTy pe"/>
</sequence>
</complexType>
</schema>
<schema elementFormDefa ult="qualified"
targetNamespace ="http://xml.apache.org/xml-soap"
xmlns="http://www.w3.org/2001/XMLSchema">
<import namespace="urn: AuthLogin"/>
<import namespace="http ://localhost:9082/axis/services/AuthLogin"/>
<complexType name="Vector">
<sequence>
<element maxOccurs="unbo unded" minOccurs="0" name="item"
type="xsd:anyTy pe"/>
</sequence>
</complexType>
</schema>
<schema elementFormDefa ult="qualified"
targetNamespace ="http://security.ws.dia melle"
xmlns="http://www.w3.org/2001/XMLSchema">
<import namespace="http ://xml.apache.org/xml-soap"/>
<import namespace="urn: AuthLogin"/>
<import namespace="http ://localhost:9082/axis/services/AuthLogin"/>
<element name="authentic ateToken">
<complexType>
<sequence>
<element name="userId" type="xsd:strin g"/>
<element name="token" type="xsd:strin g"/>
</sequence>
</complexType>
</element>
<element name="authentic ateTokenRespons e">
<complexType>
<sequence>
<element name="authentic ateTokenReturn" type="tns1:SSOS ubject"/>
</sequence>
</complexType>
</element>
<element name="logout">
<complexType>
<sequence>
<element name="userId" type="xsd:strin g"/>
</sequence>
</complexType>
</element>
<element name="logoutRes ponse">
<complexType/>
</element>
<element name="addLogin" >
<complexType>
<sequence>
<element name="loginValu e" type="tns1:WSLo ginValue"/>
</sequence>
</complexType>
</element>
<element name="addLoginR esponse">
<complexType/>
</element>
<element name="updateLog in">
<complexType>
<sequence>
<element name="lv" type="tns1:WSLo ginValue"/>
</sequence>
</complexType>
</element>
<element name="updateLog inResponse">
<complexType/>
</element>
<element name="encrypt">
<complexType>
<sequence>
<element name="clearText " type="xsd:strin g"/>
</sequence>
</complexType>
</element>
<element name="encryptRe sponse">
<complexType>
<sequence>
<element name="encryptRe turn" type="xsd:strin g"/>
</sequence>
</complexType>
</element>
<element name="decrypt">
<complexType>
<sequence>
<element name="token" type="xsd:strin g"/>
</sequence>
</complexType>
</element>
<element name="decryptRe sponse">
<complexType>
<sequence>
<element name="decryptRe turn" type="xsd:strin g"/>
</sequence>
</complexType>
</element>
</schema>
</wsdl:types>
<wsdl:message name="authentic ateTokenRequest ">
<wsdl:part element="tns2:a uthenticateToke n" name="parameter s"/>
</wsdl:message>
<wsdl:message name="logoutReq uest">
<wsdl:part element="tns2:l ogout" name="parameter s"/>
</wsdl:message>
<wsdl:message name="updateLog inRequest">
<wsdl:part element="tns2:u pdateLogin" name="parameter s"/>
</wsdl:message>
<wsdl:message name="decryptRe quest">
<wsdl:part element="tns2:d ecrypt" name="parameter s"/>
</wsdl:message>
<wsdl:message name="removeLog inResponse">
<wsdl:part element="tns1:r emoveLoginRespo nse" name="parameter s"/>
</wsdl:message>
<wsdl:message name="authentic ateTokenRespons e">
<wsdl:part element="tns2:a uthenticateToke nResponse"
name="parameter s"/>
</wsdl:message>
<wsdl:message name="getLoginR equest">
<wsdl:part element="tns1:g etLogin" name="parameter s"/>
</wsdl:message>
<wsdl:message name="logoutRes ponse">
<wsdl:part element="tns2:l ogoutResponse" name="parameter s"/>
</wsdl:message>
<wsdl:message name="encryptRe sponse">
<wsdl:part element="tns2:e ncryptResponse" name="parameter s"/>
</wsdl:message>
<wsdl:message name="getUserId Request">
<wsdl:part element="tns1:g etUserId" name="parameter s"/>
</wsdl:message>
<wsdl:message name="authentic ateRequest">
<wsdl:part element="tns1:a uthenticate" name="parameter s"/>
</wsdl:message>
<wsdl:message name="addLoginR equest">
<wsdl:part element="tns2:a ddLogin" name="parameter s"/>
</wsdl:message>
<wsdl:message name="getPrinci palsResponse">
<wsdl:part element="tns1:g etPrincipalsRes ponse"
name="parameter s"/>
</wsdl:message>
<wsdl:message name="autoReset PasswordRequest ">
<wsdl:part element="tns1:a utoResetPasswor d" name="parameter s"/>
</wsdl:message>
<wsdl:message name="encryptRe quest">
<wsdl:part element="tns2:e ncrypt" name="parameter s"/>
</wsdl:message>
<wsdl:message name="getAllLog insResponse">
<wsdl:part element="tns1:g etAllLoginsResp onse"
name="parameter s"/>
</wsdl:message>
<wsdl:message name="addLoginR esponse">
<wsdl:part element="tns2:a ddLoginResponse " name="parameter s"/>
</wsdl:message>
<wsdl:message name="getPrinci palsRequest">
<wsdl:part element="tns1:g etPrincipals" name="parameter s"/>
</wsdl:message>
<wsdl:message name="autoReset PasswordRespons e">
<wsdl:part element="tns1:a utoResetPasswor dResponse"
name="parameter s"/>
</wsdl:message>
<wsdl:message name="getLoginR esponse">
<wsdl:part element="tns1:g etLoginResponse " name="parameter s"/>
</wsdl:message>
<wsdl:message name="getUserId Response">
<wsdl:part element="tns1:g etUserIdRespons e" name="parameter s"/>
</wsdl:message>
<wsdl:message name="removeLog inRequest">
<wsdl:part element="tns1:r emoveLogin" name="parameter s"/>
</wsdl:message>
<wsdl:message name="updateLog inResponse">
<wsdl:part element="tns2:u pdateLoginRespo nse" name="parameter s"/>
</wsdl:message>
<wsdl:message name="authentic ateResponse">
<wsdl:part element="tns1:a uthenticateResp onse"
name="parameter s"/>
</wsdl:message>
<wsdl:message name="getAllLog insRequest">
<wsdl:part element="tns1:g etAllLogins" name="parameter s"/>
</wsdl:message>
<wsdl:message name="decryptRe sponse">
<wsdl:part element="tns2:d ecryptResponse" name="parameter s"/>
</wsdl:message>
<wsdl:portTyp e name="AuthLogin ">
<wsdl:operati on name="authentic ate">
<wsdl:input message="impl:a uthenticateRequ est"
name="authentic ateRequest"/>
<wsdl:output message="impl:a uthenticateResp onse"
name="authentic ateResponse"/>
</wsdl:operation>
<wsdl:operati on name="getUserId ">
<wsdl:input message="impl:g etUserIdRequest "
name="getUserId Request"/>
<wsdl:output message="impl:g etUserIdRespons e"
name="getUserId Response"/>
</wsdl:operation>
<wsdl:operati on name="autoReset Password">
<wsdl:input message="impl:a utoResetPasswor dRequest"
name="autoReset PasswordRequest "/>
<wsdl:output message="impl:a utoResetPasswor dResponse"
name="autoReset PasswordRespons e"/>
</wsdl:operation>
<wsdl:operati on name="getLogin" >
<wsdl:input message="impl:g etLoginRequest"
name="getLoginR equest"/>
<wsdl:output message="impl:g etLoginResponse "
name="getLoginR esponse"/>
</wsdl:operation>
<wsdl:operati on name="removeLog in">
<wsdl:input message="impl:r emoveLoginReque st"
name="removeLog inRequest"/>
<wsdl:output message="impl:r emoveLoginRespo nse"
name="removeLog inResponse"/>
</wsdl:operation>
<wsdl:operati on name="getAllLog ins">
<wsdl:input message="impl:g etAllLoginsRequ est"
name="getAllLog insRequest"/>
<wsdl:output message="impl:g etAllLoginsResp onse"
name="getAllLog insResponse"/>
</wsdl:operation>
<wsdl:operati on name="getPrinci pals">
<wsdl:input message="impl:g etPrincipalsReq uest"
name="getPrinci palsRequest"/>
<wsdl:output message="impl:g etPrincipalsRes ponse"
name="getPrinci palsResponse"/>
</wsdl:operation>
<wsdl:operati on name="authentic ateToken">
<wsdl:input message="impl:a uthenticateToke nRequest"
name="authentic ateTokenRequest "/>
<wsdl:output message="impl:a uthenticateToke nResponse"
name="authentic ateTokenRespons e"/>
</wsdl:operation>
<wsdl:operati on name="logout">
<wsdl:input message="impl:l ogoutRequest"
name="logoutReq uest"/>
<wsdl:output message="impl:l ogoutResponse"
name="logoutRes ponse"/>
</wsdl:operation>
<wsdl:operati on name="addLogin" >
<wsdl:input message="impl:a ddLoginRequest"
name="addLoginR equest"/>
<wsdl:output message="impl:a ddLoginResponse "
name="addLoginR esponse"/>
</wsdl:operation>
<wsdl:operati on name="updateLog in">
<wsdl:input message="impl:u pdateLoginReque st"
name="updateLog inRequest"/>
<wsdl:output message="impl:u pdateLoginRespo nse"
name="updateLog inResponse"/>
</wsdl:operation>
<wsdl:operati on name="encrypt">
<wsdl:input message="impl:e ncryptRequest"
name="encryptRe quest"/>
<wsdl:output message="impl:e ncryptResponse"
name="encryptRe sponse"/>
</wsdl:operation>
<wsdl:operati on name="decrypt">
<wsdl:input message="impl:d ecryptRequest"
name="decryptRe quest"/>
<wsdl:output message="impl:d ecryptResponse"
name="decryptRe sponse"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="AuthLogin SoapBinding" type="impl:Auth Login">
<wsdlsoap:bindi ng style="document "
transport="http ://schemas.xmlsoap .org/soap/http"/>
<wsdl:operati on name="authentic ate">
<wsdlsoap:opera tion soapAction=""/>
<wsdl:input name="authentic ateRequest">
<wsdlsoap:bod y use="literal"/>
</wsdl:input>
<wsdl:output name="authentic ateResponse">
<wsdlsoap:bod y use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operati on name="getUserId ">
<wsdlsoap:opera tion soapAction=""/>
<wsdl:input name="getUserId Request">
<wsdlsoap:bod y use="literal"/>
</wsdl:input>
<wsdl:output name="getUserId Response">
<wsdlsoap:bod y use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operati on name="autoReset Password">
<wsdlsoap:opera tion soapAction=""/>
<wsdl:input name="autoReset PasswordRequest ">
<wsdlsoap:bod y use="literal"/>
</wsdl:input>
<wsdl:output name="autoReset PasswordRespons e">
<wsdlsoap:bod y use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operati on name="getLogin" >
<wsdlsoap:opera tion soapAction=""/>
<wsdl:input name="getLoginR equest">
<wsdlsoap:bod y use="literal"/>
</wsdl:input>
<wsdl:output name="getLoginR esponse">
<wsdlsoap:bod y use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operati on name="removeLog in">
<wsdlsoap:opera tion soapAction=""/>
<wsdl:input name="removeLog inRequest">
<wsdlsoap:bod y use="literal"/>
</wsdl:input>
<wsdl:output name="removeLog inResponse">
<wsdlsoap:bod y use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operati on name="getAllLog ins">
<wsdlsoap:opera tion soapAction=""/>
<wsdl:input name="getAllLog insRequest">
<wsdlsoap:bod y use="literal"/>
</wsdl:input>
<wsdl:output name="getAllLog insResponse">
<wsdlsoap:bod y use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operati on name="getPrinci pals">
<wsdlsoap:opera tion soapAction=""/>
<wsdl:input name="getPrinci palsRequest">
<wsdlsoap:bod y use="literal"/>
</wsdl:input>
<wsdl:output name="getPrinci palsResponse">
<wsdlsoap:bod y use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operati on name="authentic ateToken">
<wsdlsoap:opera tion soapAction=""/>
<wsdl:input name="authentic ateTokenRequest ">
<wsdlsoap:bod y use="literal"/>
</wsdl:input>
<wsdl:output name="authentic ateTokenRespons e">
<wsdlsoap:bod y use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operati on name="logout">
<wsdlsoap:opera tion soapAction=""/>
<wsdl:input name="logoutReq uest">
<wsdlsoap:bod y use="literal"/>
</wsdl:input>
<wsdl:output name="logoutRes ponse">
<wsdlsoap:bod y use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operati on name="addLogin" >
<wsdlsoap:opera tion soapAction=""/>
<wsdl:input name="addLoginR equest">
<wsdlsoap:bod y use="literal"/>
</wsdl:input>
<wsdl:output name="addLoginR esponse">
<wsdlsoap:bod y use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operati on name="updateLog in">
<wsdlsoap:opera tion soapAction=""/>
<wsdl:input name="updateLog inRequest">
<wsdlsoap:bod y use="literal"/>
</wsdl:input>
<wsdl:output name="updateLog inResponse">
<wsdlsoap:bod y use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operati on name="encrypt">
<wsdlsoap:opera tion soapAction=""/>
<wsdl:input name="encryptRe quest">
<wsdlsoap:bod y use="literal"/>
</wsdl:input>
<wsdl:output name="encryptRe sponse">
<wsdlsoap:bod y use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operati on name="decrypt">
<wsdlsoap:opera tion soapAction=""/>
<wsdl:input name="decryptRe quest">
<wsdlsoap:bod y use="literal"/>
</wsdl:input>
<wsdl:output name="decryptRe sponse">
<wsdlsoap:bod y use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="AuthLogin Service">
<wsdl:port binding="impl:A uthLoginSoapBin ding" name="AuthLogin ">
<wsdlsoap:addre ss
location="http://localhost:9082/axis/services/AuthLogin"/>
</wsdl:port>
</wsdl:service>
</wsdl:definition s>
--------------XML RESPONSE -------------
<soapenv:Envelo pe
xmlns:soapenv=" http://schemas.xmlsoap .org/soap/envelope/"
xmlns:xsd="http ://www.w3.org/2001/XMLSchema"
xmlns:xsi="http ://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body >
<getLoginRespon se>
<ns1:getLoginRe sponse xmlns:ns1="urn: AuthLogin">
<authFailureCou nt>0</authFailureCoun t>
<changePasswo rd xsi:nil="1"/>
<createDate xsi:nil="1"/>
<createdBy xsi:nil="1"/>
<currentLoginHo st xsi:nil="1"/>
<gracePeriodE xp xsi:nil="1"/>
<guest>false</guest>
<lastAuthAttemp t xsi:nil="1"/>
<locked>false </locked>
<login>sysadmin </login>
<newUser>fals e</newUser>
<password>passw d00</password>
<passwordEquiva lentToken xsi:nil="1"/>
<passwordExp xsi:nil="1"/>
<resetPassword> false</resetPassword>
<service>IDM</service>
<status xsi:nil="1"/>
<token xsi:nil="1"/>
<userId>3000</userId>
</ns1:getLoginRes ponse>
</getLoginRespons e>
</soapenv:Body>
</soapenv:Envelop e>
---------------- GENERATED SOURCE CODE -------------------
<System.Web.Ser vices.Protocols .SoapDocumentMe thodAttribute(" ",
RequestNamespac e:="urn:AuthLog in", ResponseNamespa ce:="urn:AuthLo gin",
Use:=System.Web .Services.Descr iption.SoapBind ingUse.Literal,
ParameterStyle: =System.Web.Ser vices.Protocols .SoapParameterS tyle.Wrapped)>
_
Public Function getLogin(ByVal serviceId As String, ByVal login As
String) As
<System.Xml.Ser ialization.XmlE lementAttribute ("getLoginRespo nse")>
WSLoginValue
Dim results() As Object = Me.Invoke("getL ogin", New Object()
{serviceId, login})
Return CType(results(0 ), WSLoginValue)
End Function
'<remarks/>
Public Function BegingetLogin(B yVal serviceId As String, ByVal
login As String, ByVal callback As System.AsyncCal lback, ByVal
asyncState As Object) As System.IAsyncRe sult
Return Me.BeginInvoke( "getLogin", New Object() {serviceId,
login}, callback, asyncState)
End Function
'<remarks/>
Public Function EndgetLogin(ByV al asyncResult As
System.IAsyncRe sult) As WSLoginValue
Dim results() As Object = Me.EndInvoke(as yncResult)
Return CType(results(0 ), WSLoginValue)
End Function
I have webservice created with Axis 1.2.1 and that I am trying to
consuming in .NET (VB) using the Microsoft provided tools. While I am
able to consume methods on the service that return simple type, I
cannot consume methods that return complex objects. I have tried
experimenting, with this, but am at a bit of loss on where the problem
lies. When I call the services from a browser, I do get back the
response that contains valid data. Any help on this would be greatly
appreciated. I have attached supporting files. For the purpose of an
example, I have used the getLogin() method.
Thanks in advance.
Leslie
--------------WSDL:-----------------
<wsdl:definitio ns
targetNamespace ="http://localhost:9082/axis/services/AuthLogin"
xmlns:apachesoa p="http://xml.apache.org/xml-soap"
xmlns:impl="htt p://localhost:9082/axis/services/AuthLogin"
xmlns:intf="htt p://localhost:9082/axis/services/AuthLogin"
xmlns:tns1="urn :AuthLogin" xmlns:tns2="htt p://security.ws.dia melle"
xmlns:wsdl="htt p://schemas.xmlsoap .org/wsdl/"
xmlns:wsdlsoap= "http://schemas.xmlsoap .org/wsdl/soap/"
xmlns:xsd="http ://www.w3.org/2001/XMLSchema">
<!--WSDL created by Apache Axis version: 1.2.1
Built on Jun 14, 2005 (09:15:57 EDT)-->
<wsdl:types>
<schema elementFormDefa ult="qualified"
targetNamespace ="urn:AuthLogin "
xmlns="http://www.w3.org/2001/XMLSchema">
<import namespace="http ://xml.apache.org/xml-soap"/>
<import namespace="http ://localhost:9082/axis/services/AuthLogin"/>
<element name="authentic ate">
<complexType>
<sequence>
<element name="serviceId " type="xsd:strin g"/>
<element name="login" type="xsd:strin g"/>
<element name="password" type="xsd:strin g"/>
</sequence>
</complexType>
</element>
<element name="authentic ateResponse">
<complexType>
<sequence>
<element name="authentic ateResponse" type="tns1:SSOS ubject"/>
</sequence>
</complexType>
</element>
<complexType name="SSOSubjec t">
<sequence>
<element name="authentic atingAuthority" nillable="true"
type="xsd:strin g"/>
<element name="entitleme nts" nillable="true"
type="impl:Arra yOf_xsd_anyType "/>
<element name="expiratio nTime" type="xsd:long"/>
<element name="permissio ns" nillable="true"
type="impl:Arra yOf_xsd_anyType "/>
<element name="principal s" nillable="true"
type="impl:Arra yOf_xsd_anyType "/>
<element name="privateCr edentials" nillable="true"
type="impl:Arra yOf_xsd_anyType "/>
<element name="publicCre dentials" nillable="true"
type="impl:Arra yOf_xsd_anyType "/>
<element name="readOnly" type="xsd:boole an"/>
<element name="userACLs" nillable="true"
type="impl:Arra yOf_xsd_anyType "/>
<element name="userGroup s" nillable="true"
type="impl:Arra yOf_xsd_anyType "/>
<element name="userId" nillable="true" type="xsd:strin g"/>
<element name="userRoles " nillable="true"
type="impl:Arra yOf_xsd_anyType "/>
</sequence>
</complexType>
<element name="getUserId ">
<complexType>
<sequence>
<element name="serviceId " type="xsd:strin g"/>
<element name="login" type="xsd:strin g"/>
<element name="password" type="xsd:strin g"/>
</sequence>
</complexType>
</element>
<element name="getUserId Response">
<complexType>
<sequence>
<element name="getUserId Response" type="xsd:strin g"/>
</sequence>
</complexType>
</element>
<element name="autoReset Password">
<complexType>
<sequence>
<element name="serviceId " type="xsd:strin g"/>
<element name="login" type="xsd:strin g"/>
</sequence>
</complexType>
</element>
<element name="autoReset PasswordRespons e">
<complexType>
<sequence>
<element name="autoReset PasswordRespons e" type="xsd:strin g"/>
</sequence>
</complexType>
</element>
<element name="getLogin" >
<complexType>
<sequence>
<element name="serviceId " type="xsd:strin g"/>
<element name="login" type="xsd:strin g"/>
</sequence>
</complexType>
</element>
<element name="getLoginR esponse">
<complexType>
<sequence>
<element name="getLoginR esponse" type="tns1:WSLo ginValue"/>
</sequence>
</complexType>
</element>
<complexType name="WSLoginVa lue">
<sequence>
<element name="authFailu reCount" type="xsd:int"/>
<element name="changePas sword" nillable="true"
type="xsd:dateT ime"/>
<element name="createDat e" nillable="true" type="xsd:dateT ime"/>
<element name="createdBy " nillable="true" type="xsd:strin g"/>
<element name="currentLo ginHost" nillable="true"
type="xsd:strin g"/>
<element name="gracePeri odExp" nillable="true"
type="xsd:dateT ime"/>
<element name="guest" type="xsd:boole an"/>
<element name="lastAuthA ttempt" nillable="true"
type="xsd:dateT ime"/>
<element name="locked" type="xsd:boole an"/>
<element name="login" nillable="true" type="xsd:strin g"/>
<element name="newUser" type="xsd:boole an"/>
<element name="password" nillable="true" type="xsd:strin g"/>
<element name="passwordE quivalentToken" nillable="true"
type="xsd:strin g"/>
<element name="passwordE xp" nillable="true" type="xsd:dateT ime"/>
<element name="resetPass word" type="xsd:boole an"/>
<element name="service" nillable="true" type="xsd:strin g"/>
<element name="status" nillable="true" type="xsd:strin g"/>
<element name="token" nillable="true" type="xsd:strin g"/>
<element name="userId" nillable="true" type="xsd:strin g"/>
</sequence>
</complexType>
<element name="removeLog in">
<complexType>
<sequence>
<element name="serviceId " type="xsd:strin g"/>
<element name="loginId" type="xsd:strin g"/>
</sequence>
</complexType>
</element>
<element name="removeLog inResponse">
<complexType/>
</element>
<element name="getAllLog ins">
<complexType>
<sequence>
<element name="userId" type="xsd:strin g"/>
</sequence>
</complexType>
</element>
<element name="getAllLog insResponse">
<complexType>
<sequence>
<element name="getAllLog insResponse"
type="tns1:Arra yOfSSOPrincipal "/>
</sequence>
</complexType>
</element>
<complexType name="ArrayOfSS OPrincipal">
<sequence>
<element maxOccurs="unbo unded" minOccurs="0" name="item"
type="xsd:anyTy pe"/>
</sequence>
</complexType>
<element name="getPrinci pals">
<complexType>
<sequence>
<element name="userId" type="xsd:strin g"/>
</sequence>
</complexType>
</element>
<element name="getPrinci palsResponse">
<complexType>
<sequence>
<element name="getPrinci palsReturn"
type="tns1:Arra yOfSSOPrincipal "/>
</sequence>
</complexType>
</element>
</schema>
<schema elementFormDefa ult="qualified"
targetNamespace ="http://localhost:9082/axis/services/AuthLogin"
xmlns="http://www.w3.org/2001/XMLSchema">
<import namespace="http ://xml.apache.org/xml-soap"/>
<import namespace="urn: AuthLogin"/>
<complexType name="ArrayOf_x sd_anyType">
<sequence>
<element maxOccurs="unbo unded" minOccurs="0" name="item"
type="xsd:anyTy pe"/>
</sequence>
</complexType>
</schema>
<schema elementFormDefa ult="qualified"
targetNamespace ="http://xml.apache.org/xml-soap"
xmlns="http://www.w3.org/2001/XMLSchema">
<import namespace="urn: AuthLogin"/>
<import namespace="http ://localhost:9082/axis/services/AuthLogin"/>
<complexType name="Vector">
<sequence>
<element maxOccurs="unbo unded" minOccurs="0" name="item"
type="xsd:anyTy pe"/>
</sequence>
</complexType>
</schema>
<schema elementFormDefa ult="qualified"
targetNamespace ="http://security.ws.dia melle"
xmlns="http://www.w3.org/2001/XMLSchema">
<import namespace="http ://xml.apache.org/xml-soap"/>
<import namespace="urn: AuthLogin"/>
<import namespace="http ://localhost:9082/axis/services/AuthLogin"/>
<element name="authentic ateToken">
<complexType>
<sequence>
<element name="userId" type="xsd:strin g"/>
<element name="token" type="xsd:strin g"/>
</sequence>
</complexType>
</element>
<element name="authentic ateTokenRespons e">
<complexType>
<sequence>
<element name="authentic ateTokenReturn" type="tns1:SSOS ubject"/>
</sequence>
</complexType>
</element>
<element name="logout">
<complexType>
<sequence>
<element name="userId" type="xsd:strin g"/>
</sequence>
</complexType>
</element>
<element name="logoutRes ponse">
<complexType/>
</element>
<element name="addLogin" >
<complexType>
<sequence>
<element name="loginValu e" type="tns1:WSLo ginValue"/>
</sequence>
</complexType>
</element>
<element name="addLoginR esponse">
<complexType/>
</element>
<element name="updateLog in">
<complexType>
<sequence>
<element name="lv" type="tns1:WSLo ginValue"/>
</sequence>
</complexType>
</element>
<element name="updateLog inResponse">
<complexType/>
</element>
<element name="encrypt">
<complexType>
<sequence>
<element name="clearText " type="xsd:strin g"/>
</sequence>
</complexType>
</element>
<element name="encryptRe sponse">
<complexType>
<sequence>
<element name="encryptRe turn" type="xsd:strin g"/>
</sequence>
</complexType>
</element>
<element name="decrypt">
<complexType>
<sequence>
<element name="token" type="xsd:strin g"/>
</sequence>
</complexType>
</element>
<element name="decryptRe sponse">
<complexType>
<sequence>
<element name="decryptRe turn" type="xsd:strin g"/>
</sequence>
</complexType>
</element>
</schema>
</wsdl:types>
<wsdl:message name="authentic ateTokenRequest ">
<wsdl:part element="tns2:a uthenticateToke n" name="parameter s"/>
</wsdl:message>
<wsdl:message name="logoutReq uest">
<wsdl:part element="tns2:l ogout" name="parameter s"/>
</wsdl:message>
<wsdl:message name="updateLog inRequest">
<wsdl:part element="tns2:u pdateLogin" name="parameter s"/>
</wsdl:message>
<wsdl:message name="decryptRe quest">
<wsdl:part element="tns2:d ecrypt" name="parameter s"/>
</wsdl:message>
<wsdl:message name="removeLog inResponse">
<wsdl:part element="tns1:r emoveLoginRespo nse" name="parameter s"/>
</wsdl:message>
<wsdl:message name="authentic ateTokenRespons e">
<wsdl:part element="tns2:a uthenticateToke nResponse"
name="parameter s"/>
</wsdl:message>
<wsdl:message name="getLoginR equest">
<wsdl:part element="tns1:g etLogin" name="parameter s"/>
</wsdl:message>
<wsdl:message name="logoutRes ponse">
<wsdl:part element="tns2:l ogoutResponse" name="parameter s"/>
</wsdl:message>
<wsdl:message name="encryptRe sponse">
<wsdl:part element="tns2:e ncryptResponse" name="parameter s"/>
</wsdl:message>
<wsdl:message name="getUserId Request">
<wsdl:part element="tns1:g etUserId" name="parameter s"/>
</wsdl:message>
<wsdl:message name="authentic ateRequest">
<wsdl:part element="tns1:a uthenticate" name="parameter s"/>
</wsdl:message>
<wsdl:message name="addLoginR equest">
<wsdl:part element="tns2:a ddLogin" name="parameter s"/>
</wsdl:message>
<wsdl:message name="getPrinci palsResponse">
<wsdl:part element="tns1:g etPrincipalsRes ponse"
name="parameter s"/>
</wsdl:message>
<wsdl:message name="autoReset PasswordRequest ">
<wsdl:part element="tns1:a utoResetPasswor d" name="parameter s"/>
</wsdl:message>
<wsdl:message name="encryptRe quest">
<wsdl:part element="tns2:e ncrypt" name="parameter s"/>
</wsdl:message>
<wsdl:message name="getAllLog insResponse">
<wsdl:part element="tns1:g etAllLoginsResp onse"
name="parameter s"/>
</wsdl:message>
<wsdl:message name="addLoginR esponse">
<wsdl:part element="tns2:a ddLoginResponse " name="parameter s"/>
</wsdl:message>
<wsdl:message name="getPrinci palsRequest">
<wsdl:part element="tns1:g etPrincipals" name="parameter s"/>
</wsdl:message>
<wsdl:message name="autoReset PasswordRespons e">
<wsdl:part element="tns1:a utoResetPasswor dResponse"
name="parameter s"/>
</wsdl:message>
<wsdl:message name="getLoginR esponse">
<wsdl:part element="tns1:g etLoginResponse " name="parameter s"/>
</wsdl:message>
<wsdl:message name="getUserId Response">
<wsdl:part element="tns1:g etUserIdRespons e" name="parameter s"/>
</wsdl:message>
<wsdl:message name="removeLog inRequest">
<wsdl:part element="tns1:r emoveLogin" name="parameter s"/>
</wsdl:message>
<wsdl:message name="updateLog inResponse">
<wsdl:part element="tns2:u pdateLoginRespo nse" name="parameter s"/>
</wsdl:message>
<wsdl:message name="authentic ateResponse">
<wsdl:part element="tns1:a uthenticateResp onse"
name="parameter s"/>
</wsdl:message>
<wsdl:message name="getAllLog insRequest">
<wsdl:part element="tns1:g etAllLogins" name="parameter s"/>
</wsdl:message>
<wsdl:message name="decryptRe sponse">
<wsdl:part element="tns2:d ecryptResponse" name="parameter s"/>
</wsdl:message>
<wsdl:portTyp e name="AuthLogin ">
<wsdl:operati on name="authentic ate">
<wsdl:input message="impl:a uthenticateRequ est"
name="authentic ateRequest"/>
<wsdl:output message="impl:a uthenticateResp onse"
name="authentic ateResponse"/>
</wsdl:operation>
<wsdl:operati on name="getUserId ">
<wsdl:input message="impl:g etUserIdRequest "
name="getUserId Request"/>
<wsdl:output message="impl:g etUserIdRespons e"
name="getUserId Response"/>
</wsdl:operation>
<wsdl:operati on name="autoReset Password">
<wsdl:input message="impl:a utoResetPasswor dRequest"
name="autoReset PasswordRequest "/>
<wsdl:output message="impl:a utoResetPasswor dResponse"
name="autoReset PasswordRespons e"/>
</wsdl:operation>
<wsdl:operati on name="getLogin" >
<wsdl:input message="impl:g etLoginRequest"
name="getLoginR equest"/>
<wsdl:output message="impl:g etLoginResponse "
name="getLoginR esponse"/>
</wsdl:operation>
<wsdl:operati on name="removeLog in">
<wsdl:input message="impl:r emoveLoginReque st"
name="removeLog inRequest"/>
<wsdl:output message="impl:r emoveLoginRespo nse"
name="removeLog inResponse"/>
</wsdl:operation>
<wsdl:operati on name="getAllLog ins">
<wsdl:input message="impl:g etAllLoginsRequ est"
name="getAllLog insRequest"/>
<wsdl:output message="impl:g etAllLoginsResp onse"
name="getAllLog insResponse"/>
</wsdl:operation>
<wsdl:operati on name="getPrinci pals">
<wsdl:input message="impl:g etPrincipalsReq uest"
name="getPrinci palsRequest"/>
<wsdl:output message="impl:g etPrincipalsRes ponse"
name="getPrinci palsResponse"/>
</wsdl:operation>
<wsdl:operati on name="authentic ateToken">
<wsdl:input message="impl:a uthenticateToke nRequest"
name="authentic ateTokenRequest "/>
<wsdl:output message="impl:a uthenticateToke nResponse"
name="authentic ateTokenRespons e"/>
</wsdl:operation>
<wsdl:operati on name="logout">
<wsdl:input message="impl:l ogoutRequest"
name="logoutReq uest"/>
<wsdl:output message="impl:l ogoutResponse"
name="logoutRes ponse"/>
</wsdl:operation>
<wsdl:operati on name="addLogin" >
<wsdl:input message="impl:a ddLoginRequest"
name="addLoginR equest"/>
<wsdl:output message="impl:a ddLoginResponse "
name="addLoginR esponse"/>
</wsdl:operation>
<wsdl:operati on name="updateLog in">
<wsdl:input message="impl:u pdateLoginReque st"
name="updateLog inRequest"/>
<wsdl:output message="impl:u pdateLoginRespo nse"
name="updateLog inResponse"/>
</wsdl:operation>
<wsdl:operati on name="encrypt">
<wsdl:input message="impl:e ncryptRequest"
name="encryptRe quest"/>
<wsdl:output message="impl:e ncryptResponse"
name="encryptRe sponse"/>
</wsdl:operation>
<wsdl:operati on name="decrypt">
<wsdl:input message="impl:d ecryptRequest"
name="decryptRe quest"/>
<wsdl:output message="impl:d ecryptResponse"
name="decryptRe sponse"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="AuthLogin SoapBinding" type="impl:Auth Login">
<wsdlsoap:bindi ng style="document "
transport="http ://schemas.xmlsoap .org/soap/http"/>
<wsdl:operati on name="authentic ate">
<wsdlsoap:opera tion soapAction=""/>
<wsdl:input name="authentic ateRequest">
<wsdlsoap:bod y use="literal"/>
</wsdl:input>
<wsdl:output name="authentic ateResponse">
<wsdlsoap:bod y use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operati on name="getUserId ">
<wsdlsoap:opera tion soapAction=""/>
<wsdl:input name="getUserId Request">
<wsdlsoap:bod y use="literal"/>
</wsdl:input>
<wsdl:output name="getUserId Response">
<wsdlsoap:bod y use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operati on name="autoReset Password">
<wsdlsoap:opera tion soapAction=""/>
<wsdl:input name="autoReset PasswordRequest ">
<wsdlsoap:bod y use="literal"/>
</wsdl:input>
<wsdl:output name="autoReset PasswordRespons e">
<wsdlsoap:bod y use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operati on name="getLogin" >
<wsdlsoap:opera tion soapAction=""/>
<wsdl:input name="getLoginR equest">
<wsdlsoap:bod y use="literal"/>
</wsdl:input>
<wsdl:output name="getLoginR esponse">
<wsdlsoap:bod y use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operati on name="removeLog in">
<wsdlsoap:opera tion soapAction=""/>
<wsdl:input name="removeLog inRequest">
<wsdlsoap:bod y use="literal"/>
</wsdl:input>
<wsdl:output name="removeLog inResponse">
<wsdlsoap:bod y use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operati on name="getAllLog ins">
<wsdlsoap:opera tion soapAction=""/>
<wsdl:input name="getAllLog insRequest">
<wsdlsoap:bod y use="literal"/>
</wsdl:input>
<wsdl:output name="getAllLog insResponse">
<wsdlsoap:bod y use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operati on name="getPrinci pals">
<wsdlsoap:opera tion soapAction=""/>
<wsdl:input name="getPrinci palsRequest">
<wsdlsoap:bod y use="literal"/>
</wsdl:input>
<wsdl:output name="getPrinci palsResponse">
<wsdlsoap:bod y use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operati on name="authentic ateToken">
<wsdlsoap:opera tion soapAction=""/>
<wsdl:input name="authentic ateTokenRequest ">
<wsdlsoap:bod y use="literal"/>
</wsdl:input>
<wsdl:output name="authentic ateTokenRespons e">
<wsdlsoap:bod y use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operati on name="logout">
<wsdlsoap:opera tion soapAction=""/>
<wsdl:input name="logoutReq uest">
<wsdlsoap:bod y use="literal"/>
</wsdl:input>
<wsdl:output name="logoutRes ponse">
<wsdlsoap:bod y use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operati on name="addLogin" >
<wsdlsoap:opera tion soapAction=""/>
<wsdl:input name="addLoginR equest">
<wsdlsoap:bod y use="literal"/>
</wsdl:input>
<wsdl:output name="addLoginR esponse">
<wsdlsoap:bod y use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operati on name="updateLog in">
<wsdlsoap:opera tion soapAction=""/>
<wsdl:input name="updateLog inRequest">
<wsdlsoap:bod y use="literal"/>
</wsdl:input>
<wsdl:output name="updateLog inResponse">
<wsdlsoap:bod y use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operati on name="encrypt">
<wsdlsoap:opera tion soapAction=""/>
<wsdl:input name="encryptRe quest">
<wsdlsoap:bod y use="literal"/>
</wsdl:input>
<wsdl:output name="encryptRe sponse">
<wsdlsoap:bod y use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operati on name="decrypt">
<wsdlsoap:opera tion soapAction=""/>
<wsdl:input name="decryptRe quest">
<wsdlsoap:bod y use="literal"/>
</wsdl:input>
<wsdl:output name="decryptRe sponse">
<wsdlsoap:bod y use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="AuthLogin Service">
<wsdl:port binding="impl:A uthLoginSoapBin ding" name="AuthLogin ">
<wsdlsoap:addre ss
location="http://localhost:9082/axis/services/AuthLogin"/>
</wsdl:port>
</wsdl:service>
</wsdl:definition s>
--------------XML RESPONSE -------------
<soapenv:Envelo pe
xmlns:soapenv=" http://schemas.xmlsoap .org/soap/envelope/"
xmlns:xsd="http ://www.w3.org/2001/XMLSchema"
xmlns:xsi="http ://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body >
<getLoginRespon se>
<ns1:getLoginRe sponse xmlns:ns1="urn: AuthLogin">
<authFailureCou nt>0</authFailureCoun t>
<changePasswo rd xsi:nil="1"/>
<createDate xsi:nil="1"/>
<createdBy xsi:nil="1"/>
<currentLoginHo st xsi:nil="1"/>
<gracePeriodE xp xsi:nil="1"/>
<guest>false</guest>
<lastAuthAttemp t xsi:nil="1"/>
<locked>false </locked>
<login>sysadmin </login>
<newUser>fals e</newUser>
<password>passw d00</password>
<passwordEquiva lentToken xsi:nil="1"/>
<passwordExp xsi:nil="1"/>
<resetPassword> false</resetPassword>
<service>IDM</service>
<status xsi:nil="1"/>
<token xsi:nil="1"/>
<userId>3000</userId>
</ns1:getLoginRes ponse>
</getLoginRespons e>
</soapenv:Body>
</soapenv:Envelop e>
---------------- GENERATED SOURCE CODE -------------------
<System.Web.Ser vices.Protocols .SoapDocumentMe thodAttribute(" ",
RequestNamespac e:="urn:AuthLog in", ResponseNamespa ce:="urn:AuthLo gin",
Use:=System.Web .Services.Descr iption.SoapBind ingUse.Literal,
ParameterStyle: =System.Web.Ser vices.Protocols .SoapParameterS tyle.Wrapped)>
_
Public Function getLogin(ByVal serviceId As String, ByVal login As
String) As
<System.Xml.Ser ialization.XmlE lementAttribute ("getLoginRespo nse")>
WSLoginValue
Dim results() As Object = Me.Invoke("getL ogin", New Object()
{serviceId, login})
Return CType(results(0 ), WSLoginValue)
End Function
'<remarks/>
Public Function BegingetLogin(B yVal serviceId As String, ByVal
login As String, ByVal callback As System.AsyncCal lback, ByVal
asyncState As Object) As System.IAsyncRe sult
Return Me.BeginInvoke( "getLogin", New Object() {serviceId,
login}, callback, asyncState)
End Function
'<remarks/>
Public Function EndgetLogin(ByV al asyncResult As
System.IAsyncRe sult) As WSLoginValue
Dim results() As Object = Me.EndInvoke(as yncResult)
Return CType(results(0 ), WSLoginValue)
End Function
Comment