D
drb
Hi,
I'm trying to create a simple test/dummy .NET XML web service (using
WSDL/XSD and the WSDL.exe tool) that an existing .NET Remoting XML web
service client can talk to.
The good news is it seems to be very close to working. The not-so-good news
is that when a method is invoked, when I breakpoint on the server side, all
the parameters to the method are either null (strings) or zero (ints), even
though the client specified real values for all of them. Running the SOAP
TRACE revealed the following:
HTTP headers:
<HTTPHeaders>
<user-agent>Mozilla/4.0+(compatible; MSIE 6.0; Windows 5.1.2600.0; MS .NET
Remoting; MS .NET CLR 1.1.4322.2032 )</user-agent>
<content-type>text/xml; charset="utf-8"</content-type>
<soapaction>"http://schemas.microsoft.com/clr/nsassem/xxxxxx/TSGsmInterface#Downlink"</soapaction>
<content-length>716</content-length>
<expect>100-continue</expect>
<host>f812f61:8080</host>
</HTTPHeaders>
Request:
<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:clr="http://schemas.microsoft.com/soap/encoding/clr/1.0"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<i2ownlink id="ref-1"
xmlns:i2="http://schemas.microsoft.com/clr/nsassem/xxxxxx/TSGsmInterface">
<key id="ref-3">92</key>
<priority>1</priority>
<message id="ref-4">A1234560765432101000003</message>
<telephone id="ref-5">9123-456-7890</telephone>
</i2ownlink>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Does the fact that there is no "i2:" namespace prefix on the parameters (ex.
"<key>", "<prioirity>", etc.) cause the server/service to not see the values
somehow? (I assume this "i2" namespace was created by the XML/SOAP
serializer on the client side?) I've defined the service method is defined
(C#) as follows:
[System.Web.Services.WebMethod(Description="Send a Downlink Message to the
GSM Provider")]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://schemas.microsoft.com/clr/nsassem/xxxxxx.TS.GSM.IMessageToGNU/TSGsmInterface#Downlink",
RequestElementName="GSMDownlink",
RequestNamespace="http://schemas.microsoft.com/clr/nsassem/xxxxxx.TS.GSM.IMessageToGNU/TSGsmInterface/types",
ResponseElementName="GSMDownlinkResponse",
ResponseNamespace="http://schemas.microsoft.com/clr/nsassem/xxxxxx.TS.GSM.IMessageToGNU/TSGsmInterface/types",
Use=System.Web.Services.Description.SoapBindingUse.Literal,
ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
[return: System.Xml.Serialization.XmlElementAttribute("uplinkMatchID")]
override public string Downlink(string key, int priority, string message,
string telephone)
{
I'm trying to create a simple test/dummy .NET XML web service (using
WSDL/XSD and the WSDL.exe tool) that an existing .NET Remoting XML web
service client can talk to.
The good news is it seems to be very close to working. The not-so-good news
is that when a method is invoked, when I breakpoint on the server side, all
the parameters to the method are either null (strings) or zero (ints), even
though the client specified real values for all of them. Running the SOAP
TRACE revealed the following:
HTTP headers:
<HTTPHeaders>
<user-agent>Mozilla/4.0+(compatible; MSIE 6.0; Windows 5.1.2600.0; MS .NET
Remoting; MS .NET CLR 1.1.4322.2032 )</user-agent>
<content-type>text/xml; charset="utf-8"</content-type>
<soapaction>"http://schemas.microsoft.com/clr/nsassem/xxxxxx/TSGsmInterface#Downlink"</soapaction>
<content-length>716</content-length>
<expect>100-continue</expect>
<host>f812f61:8080</host>
</HTTPHeaders>
Request:
<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:clr="http://schemas.microsoft.com/soap/encoding/clr/1.0"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<i2ownlink id="ref-1"
xmlns:i2="http://schemas.microsoft.com/clr/nsassem/xxxxxx/TSGsmInterface">
<key id="ref-3">92</key>
<priority>1</priority>
<message id="ref-4">A1234560765432101000003</message>
<telephone id="ref-5">9123-456-7890</telephone>
</i2ownlink>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Does the fact that there is no "i2:" namespace prefix on the parameters (ex.
"<key>", "<prioirity>", etc.) cause the server/service to not see the values
somehow? (I assume this "i2" namespace was created by the XML/SOAP
serializer on the client side?) I've defined the service method is defined
(C#) as follows:
[System.Web.Services.WebMethod(Description="Send a Downlink Message to the
GSM Provider")]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://schemas.microsoft.com/clr/nsassem/xxxxxx.TS.GSM.IMessageToGNU/TSGsmInterface#Downlink",
RequestElementName="GSMDownlink",
RequestNamespace="http://schemas.microsoft.com/clr/nsassem/xxxxxx.TS.GSM.IMessageToGNU/TSGsmInterface/types",
ResponseElementName="GSMDownlinkResponse",
ResponseNamespace="http://schemas.microsoft.com/clr/nsassem/xxxxxx.TS.GSM.IMessageToGNU/TSGsmInterface/types",
Use=System.Web.Services.Description.SoapBindingUse.Literal,
ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
[return: System.Xml.Serialization.XmlElementAttribute("uplinkMatchID")]
override public string Downlink(string key, int priority, string message,
string telephone)
{