SOAP - Beginner Desperately looking for Help

Rodney Garland rodney_garland at hotmail.com
Sat Nov 26 19:59:57 EST 2005


Hi All,

I am a relative beginner to Python and am looking for help with sending and 
XML message and getting back a return file.  The server is:

https://node.deq.state.or.us/node/node.asmx

I have have successfully sent and recieved using the PING, AUTHENTICATE 
(send in username and password and return a secuirity token), SOLICIT(send 
in information for a query and get a number indicating the query), 
GETSTATUS(status of query) using SOAPpy.  I am using Python 2.4 on a Window 
XP machine.

What I want to do now is download the result of my query using the DOWNLOAD 
method.  However, I cann't figure out how to do this.  I have tried SOAPpy 
and httplib and I cann't send the correct XML outgoing message.  Any help 
with this would be greatly appreciated.  Following is the needed outgoing 
XML file and my successful SOAPpy code.

Thank you,

Rodney (rodney_garland at hotmail.com)

POST /node/node.asmx HTTP/1.1
Host: node.deq.state.or.us
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: ""

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" 
xmlns:tns="http://www.ExchangeNetwork.net/schema/v1.0/node.wsdl" 
xmlns:types="http://www.ExchangeNetwork.net/schema/v1.0/node.wsdl/encodedTypes" 
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
    <q1:Download 
xmlns:q1="http://www.ExchangeNetwork.net/schema/v1.0/node.xsd">
      <securityToken xsi:type="xsd:string">string</securityToken>
      <transactionId xsi:type="xsd:string">string</transactionId>
      <dataflow xsi:type="xsd:string">string</dataflow>
      <documents href="#id1" />
    </q1:Download>
    <soapenc:Array id="id1" 
xmlns:q1="http://www.ExchangeNetwork.net/schema/v1.0/node.xsd" 
soapenc:arrayType="q1:NodeDocument[2]">
      <Item href="#id2" />
      <Item href="#id3" />
    </soapenc:Array>
    <q3:NodeDocument id="id2" xsi:type="q3:NodeDocument" 
xmlns:q3="http://www.ExchangeNetwork.net/schema/v1.0/node.xsd">
      <name xsi:type="xsd:string">string</name>
      <type xsi:type="xsd:string">string</type>
    </q3:NodeDocument>
    <q4:NodeDocument id="id3" xsi:type="q4:NodeDocument" 
xmlns:q4="http://www.ExchangeNetwork.net/schema/v1.0/node.xsd">
      <name xsi:type="xsd:string">string</name>
      <type xsi:type="xsd:string">string</type>
    </q4:NodeDocument>
  </soap:Body>
</soap:Envelope>
Below is an example of the code that does work.

urlNode = 'https://node.deq.state.or.us/node/node.asmx?op=NodePing'
namespace = 'http://www.ExchangeNetwork.net/schema/v1.0/node.xsd'
server = SOAPProxy(urlNode, namespace)
PING = server.NodePing('Ping')

urlAuth = 'https://node.deq.state.or.us/node/node.asmx?op=Authenticate'
# AUTHENTICATE - Returns a variable with the token
server = SOAPProxy(urlAuth, namespace)
token = server.Authenticate(userId='MYUSERNAME', credential='MYPASSWORD', 
authenticationMethod='Invoke')
print token

urlSolicit = 'https://node.deq.state.or.us/node/node.asmx?op=Solicit'
server = SOAPProxy(urlSolicit, namespace)
rowID='0'
maxRows='1000'
service='GetAirMeasurements'
fieldEventStartDate='2005-01-01'
fieldEventEndDate='2005-02-01'
analyteName='PM10'
parameters=[rowID,maxRows,'','','','','','','','','','','','','','','',fieldEventStartDate,fieldEventEndDate,'',analyteName]
transID = server.Solicit(securityToken = token, returnURL = '', request = 
'GetAirMeasurements', parameters = parameters)
print transID








More information about the Python-list mailing list