Nach langer Zeit habe ich mal wieder ein Problem:
Ich möchte einen WFS (Geoserver) abfragen und das resultierende XML parsen. Dazu benutze ich folgendes momentan noch einfache Skript:
Code: Alles auswählen
import urllib
import urllib2
base_url = u'http://bwastr-locator.wsv.bund.de/wfsfac/wfs'
version = u'1.1.0'
def _request(data):
'''
Evaluates the request and returns the xml document.
'''
#request = 'http://bwastr-locator.wsv.bund.de/wfsfac/wfs?SERVICE=WMS&REQUEST=GetCapabilities&VERSION=1.1.0'
request = urllib2.Request(base_url, urllib.urlencode(data))
return urllib2.urlopen(request)
def capabilities(service='WMS'):
return _request({'REQUEST': 'GetCapabilities', 'SERVICE': service, 'VERSION':version})
if __name__ == '__main__':
while True:
keyin = raw_input('> ')
if keyin == 'c':
for line in capabilities().readlines():
print(line)
if keyin == 'q':
exit()
Code: Alles auswählen
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<!DOCTYPE ServiceExceptionReport>
<ServiceExceptionReport version="1.2.0" xmlns="http://www.opengis.net/ogc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/ogc ../wfs/1.0.0/OGC-exception.xsd">
<ServiceException>
Query-Parameter kann nicht decodiert werden: Content is not allowed in prolog.
</ServiceException>
</ServiceExceptionReport
Ich kenn mich mit XML nicht so gut aus, deshalb frage ich mal hier wo der Fehler liegt, bzw. welche Header-Einstellungen vorzunehmen sind?
Für die Capability-Abfrage lässt sich das noch als String händeln, aber später kommen da noch längere Abfragen, da wär das nicht so toll.
Gruß Uwe