Running my modified fork of suds trunk/default, and according to the SOAP interface provider, suds is sending GET requests instead of POSTs for invoking methods. Obviously GETting the WSDL is fine, but the sysadmin sent me these log messages:
[20/Apr/2009:19:07:38 -0400] "GET /edatafeed/EDataFeed?wsdl HTTP/1.1" 200 78058 [20/Apr/2009:19:08:39 -0400] "GET /edatafeed/EDataFeed HTTP/1.1" 500 227 [20/Apr/2009:19:09:00 -0400] "GET /edatafeed/EDataFeed HTTP/1.1" 500 227 [20/Apr/2009:19:09:36 -0400] "GET /edatafeed/EDataFeed HTTP/1.1" 500 227 [20/Apr/2009:19:13:12 -0400] "GET /edatafeed/EDataFeed HTTP/1.1" 500 227 [20/Apr/2009:19:23:45 -0400] "GET /edatafeed/EDataFeed HTTP/1.1" 500 227
I added the following patch to suds/transport/http.py to get more logging and it reports POST as expected:
diff -r 57b4aebd6109 suds/transport/http.py --- a/suds/transport/http.py Mon Apr 20 19:16:18 2009 -0700 +++ b/suds/transport/http.py Tue Apr 21 12:17:10 2009 -0700 @@ -74,6 +74,7 @@ self.__addcookies(u2request) self.__setproxy(url, u2request) request.headers.update(u2request.headers) + log.debug('method: %s', u2request.get_method()) log.debug('sending:\n%s', request) fp = self.__open(u2request) self.__getcookies(fp, u2request)
I'm not sure I follow all that code, but I don't understand how the request somehow becomes a GET *after* that line.
I'm setting up a SOAP client service with WSSE and a username/password and just calling:
c.service.someGetter()
Any ideas? (Using Ubuntu and Python 2.6.2)