Problems getting Python client (SOAPpy) to consume .NET web services

Michael Hatmaker mhatmaker at gmail.com
Wed Sep 15 00:37:47 EDT 2004


Nice catch! Actually, I had tried that once, but there is one more
trick to make this work (that I had since added). You must add the
following line in your C# web service (I put it before the
[WebService(Namespace=...] line):

[SoapDocumentService (Use=SoapBindingUse.Encoded)]

(and I also think you need to import the following:)

using System.Web.Services.Protocols;
using System.Web.Services.Description;
using System.Xml.Serialization;

So for anyone else that is having this problem, the solution is the
combination of the two: (1) You must ad the [SoapDocumentService
(Use=SoapBindingUse.Encoded)] line to your web service (along with all
the appropriate "using" statements shown above) and (2) you must
specify the arguments by name in the method call like "server.Add(a=3,
b=5)".

Phew. Thanks again for making me go back and take a look at that named
arguments thing. I still don't know if there is hope for using a .NET
web service that I didn't write (such as those on www.xmethods.net),
but I'll be sure to let everyone know if I find a solution.

Benjamin Niemann <b.niemann at betternet.de> wrote in message news:<ci6ana$445$1 at online.de>...
> Michael Hatmaker wrote:
> 
> > I have begun experimenting with web services, and I created some
> > simple web services in C# and was able to install them with IIS and
> > create an equally simple C# client to consume them.
> > 
> > My next experiment was to use Python to consume these same web
> > services, and even though I am able to get Python to consume web
> > services from a variety of sources (Apache SOAP, Glue, AXIS), I cannot
> > get web services created with MS.NET to work. Actually, methods with
> > no arguments work fine, but any methods that take arguments do not
> > work. There is no error, it is simply that an incorrect result is
> > returned (i.e. my simple Add(int a, int b) web service always returns
> > zero).
> > 
> > I tried playing around with the
> > [SoapDocumentService(Use=SoapBindingUse.Literal,
> > ParameterStyle=SoapParameterStyle.Wrapped)] arguments in .NET, but I
> > have had no success as of yet. I don't think it's just me since I
> > cannot consume any of the web services on webmethods.net that are
> > created using MS.NET.
> > 
> > My Python code looks something like this:
> > 
> > from SOAPpy import WSDL
> > server = WSDL.Proxy('http://localhost/MyWebServices/FirstService.asmx?WSDL')
> > server.SayHello()    # works correctly - just prints a hello message
> > server.Add(3, 4)     # does not work - returns zero
> > 
> > Any tip that would point me in the right direction would be greatly
> > appreciated!
> I tried this some time before, too. Actually cannot remember, if I finally 
> succeeded. I think using keyword arguments in Python got me one step further, e.g.:
> server.Add(a=3, b=4)



More information about the Python-list mailing list