By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
448,712 Members | 1,540 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 448,712 IT Pros & Developers. It's quick & easy.

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

P: n/a
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!
Jul 18 '05 #1
Share this Question
Share on Google+
2 Replies


P: n/a
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)
Jul 18 '05 #2

P: n/a
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.*******@betternet.de> wrote in message news:<ci**********@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)

Jul 18 '05 #3

This discussion thread is closed

Replies have been disabled for this discussion.