Python and SOAP

Randall Smith randall at tnr.cc
Thu Jan 8 18:42:20 EST 2004


Download soappy

http://pywebsvcs.sourceforge.net/

Randall

JuiceMan wrote:
> Hi, i've been trying to access the my company's SOAP webservice with
> no luck.
> I'm using the httplib library.
> 
> This is my code:
> 
> 
> 
> from httplib import HTTP
> from urllib import quote
> 
> # Establish SOAP data
> 
> SOAPdata = '<?xml version="1.0" encoding="utf-8"?>'
> SOAPdata = '<soap:Envelope
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">'
> SOAPdata = SOAPdata + '\n  <soap:Body>'
> SOAPdata = SOAPdata + '\n    <checkPassword
> xmlns="COM.COAIR.WWW.Technology.CoWebServices.COWSEmployeeServiceCenter">'
> SOAPdata = SOAPdata + '\n      <employeeID>XXXXXX</employeeID>'
> SOAPdata = SOAPdata + '\n      <password>XXXXXX</password>'
> SOAPdata = SOAPdata + '\n      <accessCode>XXXXX</accessCode>'
> SOAPdata = SOAPdata + '\n    </checkPassword>'
> SOAPdata = SOAPdata + '\n  </soap:Body>'
> SOAPdata = SOAPdata + '\n</soap:Envelope>'
> 
> postdata = quote(SOAPdata)
> 
> 
> print "\n************************* OUTGOING SOAP
> ************************************"
> print postdata
> 
> # Begin HTTP request
> req = HTTP("insidecoair5")
> req.putrequest("POST",
> "/cowsemployeeservicecenter/cowsemployeeservicecenter.asmx")
> req.putheader("Accept", "text/xml; charset=utf-8")
> req.putheader("Content-Type", "text/xml; charset=utf-8")
> req.putheader("Content-Legth", str(len(postdata)))
> req.putheader("SOAPAction",
> "COM.COAIR.WWW.Technology.CoWebServices.COWSEmployeeServiceCenter/checkPassword")
> 
> req.endheaders()
> 
> # Send SOAP body
> req.send(postdata)
> 
> 
> ec, em, h = req.getreply()
> print "\n*************************** HTTP RESPONSE
> **********************************"
> print ec, em
> 
> print "\n*************************** HTTP HEADER RESPONSE
> ***************************"
> print h
> 
> # get file-like object from HTTP response
> # and print received HTML to screen
> fd = req.getfile()
> textlines = fd.read()
> fd.close()
> 
> print "\n************************** INCOMING SOAP
> ***********************************"
> print textlines
> 
> 
> I get back a faultstring with a "THe root element is missing" error
> 
> I cant seem to see what im doing wrong.  Any help would be greatly
> appreciated.




More information about the Python-list mailing list