Subject: C# client for SOAP::Lite web service
Posted By: wirespring Post Date: 12/8/2006 6:14:06 PM
My company has developed a series of SOAP services using SOAP::Lite on Linux.  We've successfully had other Perl, PHP, Ruby and Java clients access the services, but no luck with .NET yet.  I've created a simple service to try and identify the problem, which hopefully somebody will be able to help with.

I consume the following document literal (wrapped) WSDL file: http://alpha.wirespring.net/web_services/Endpoints/SOAP/Demo?WSDL, generate a dll using wsdl.exe and csc.  You can re-generate it if you like, but the method call for return_chars() looks like this:

    public string return_chars([System.Xml.Serialization.XmlElementAttribute(
            "return_chars",
            Namespace="urn:Endpoints/SOAP/Demo"
        )] return_chars return_chars1) {
        object[] results = this.Invoke("return_chars", new object[] {
                    return_chars1});
        return ((string)(results[0]));
    }


We then compile a C# client against Demo.dll (the Security section is optional, since we've disabled the authentication to try and work this bug out):

using System;
using System.Diagnostics;
using System.Net;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Serialization;

class Example1 {

    public static void Main(string[] args) {
        // Set parameters
        return_chars x = new return_chars();
        x.input_string = "NET SOAP test string";
        x.second_string = "";

        //Security auth_info = new Security();
        //auth_info.Account = "ACCOUNTNAME";
        //auth_info.Username = "username";
        //auth_info.Password = "password";

        Demo myDemo = new Demo();
        //myDemo.SecurityValue = auth_info;
        Console.WriteLine("Got return value: " + myDemo.return_chars(x));
    }
}

When we execute the client, it hits the server, which returns back valid-looking XML, however myDemo.return_chars(x) is null.  I used .NET Webservice Studio to examine the response content.  This is what the server is sending back:

ResponseCode: 200 (OK)
Pragma:no-cache
SOAPAction:"Endpoints/SOAP/Demo#return_chars"
X-Cache:MISS from alpha.wirespring.net
Transfer-Encoding:chunked
Cache-Control:no-cache
Content-Type:text/xml
Date:Fri, 08 Dec 2006 18:58:43 GMT
Expires:Fri, 08 Dec 2006 18:58:43 GMT
Server:Apache/1.3.34 (Unix) mod_perl/1.29

<?xml version="1.0" encoding="utf-16"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <return_charsResponse soap:encodingStyle="http://xml.apache.org/xml-soap/literalxml">
      <s-gensym18 xsi:type="xsd:string">N.E.T. .S.O.A.P .t.e.s.t. .s.t.r.i.n.g</s-gensym18>
    </return_charsResponse>
  </soap:Body>
</soap:Envelope>

The visual tool in .NET WebService Studio also indicates that the result string is null.  Oddly, though, when I use the Java-based StrikeIron Web Service Analyzer, I get the exact same return content, but it does correctly grab the return string.

At this point we're about out of ideas, so I'd appreciate any insight that you .NET experts may have!

Go to topic 53356

Return to index page 98
Return to index page 97
Return to index page 96
Return to index page 95
Return to index page 94
Return to index page 93
Return to index page 92
Return to index page 91
Return to index page 90
Return to index page 89