Some examples on how to connect to the FEWS PI-XML SOAP Web Service. To connect to the PI-XML SOAP Web Service a SOAP Request has to be constructed. See FEWS PI SOAP Web Service Request examples for some sample requests.

Python

To get time series from FEWS using Python the following example uses the requests module and reads the time series PI-XML content from the SOAP response.

# Simple example that uses python to get timeSeries from the Delft-FEWS PI Soap Service.
import requests
import xml.etree.ElementTree as ET

soapMessage = """<?xml version="1.0" ?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:few="http://fewspiservice.wldelft.nl">
   <soapenv:Header/>
   <soapenv:Body>
      <few:getTimeSeries>
         <few:queryParams>
            <endTime>2010-01-01T00:00:00Z</endTime>
            <locationIds>63306260000</locationIds>
            <parameterIds>T.obs.mean</parameterIds>
            <startTime>2000-01-01T00:00:00Z</startTime>
         </few:queryParams>
      </few:getTimeSeries>
   </soapenv:Body>
</soapenv:Envelope>"""

url = 'http://localhost:8080/FewsWebServices/fewspiservice'
headers = {
    "Content-Type": "text/xml",
    "SOAPAction" : "\"\""
}

response = requests.post(url=url, data=soapMessage, headers=headers)
data = response.text
xmlTree = ET.fromstring(data)
piXmlResponse = None
for elem in xmlTree.iter():
    if elem.tag == 'return':
        piXmlResponse = elem.text
        
if piXmlResponse is not None:
    print(piXmlResponse)
    # For further processing, the PI-XML response can be parsed as well.
    parsedPiXml = ET.fromstring(piXmlResponse)
else:
    print('No pi xml response found')

 

For PI Services that don't support the getTimeSeries method yet, the getTimeSeriesForFilter method can be used. See the following example on how to create a soap request for this method:

 

 

  • No labels