Hi,
I'm having problems consuming a .net ws using kSoap. It seems I cannot pass parameters into the web service. I have read that I should add the following property above my web service method:
[System.Web.Services.Protocols.SoapRpcMethod]
However, when I do this I get the following error:
Server was unable to read request. --> There is an error in XML document (4, 4). --> <GetUserDetails xmlns="HTTP/tempuri" > was not expected.
I also try adding the following property to my webservice class:
[SoapDocumentService(SoapBindingUse.Encoded, SoapParameterStyle.Wrapped)]
But this results in the same error. If I take properties out, I can invoke the web service, but cannot pass parameter values to the webservice.
Here is my code:
Soap Server:
[WebMethod]
//[System.Web.Services.Protocols.SoapRpcMethod]
public peopleDetails GetUserDetails( string as_GPN )
{
//as_GPN = "CA012403529";
string ls_StoredProc = "usp_UserDetails_Get";
object[] lo_QueryParms = { as_GPN };
DataSet lo_DataSet = lo_DatabaseEYMobilePhoneBook.ExecuteDataSet( ls_StoredProc, lo_QueryParms );
return this.ReturnPeopleDetails( lo_DataSet.Tables[0] , as_GPN );
}
Client Code:
SoapObject EYPS = new SoapObject("HTTP/tempuri", "GetUserDetails" );
EYPS.addProperty( "as_GPN", "CA012403529" );
serverResponse = new HttpTransport( phoneServiceUrl, "HTTP/tempuri.org/GetUserDetails" ).call(EYPS);
Soap Request Template (as provided by the .net webservice):
POST /bbservice1/service1.asmx HTTP/1.1
Host: localhost
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "HTTP/tempuri.org/GetUserDetails"
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlnssi="2001/XMLSchema-instance" xmlnssd="w3.org/2001/XMLSchema" xmlns:soapenc="xmlsoap/soap/encoding/" xmlns:tns="HTTP/tempuri/" xmlns:types="HTTP/tempuri/encodedTypes" xmlns:soap="HTTP/schemas.xmlsoap/soap/envelope/">
<soap:Body soap:encodingStyle="xmlsoap/soap/encoding/">
<tns:GetUserDetails xsi:type="tns:GetUserDetails">
<as_GPN xsi:type="xsd:string">string</as_GPN>
</tns:GetUserDetails>
</soap:Body>
</soap:Envelope>
Any help would be much appreciated.
Please note that I could not paste URLs so
HTTP/ = http: //
Thanks,
Matt