Hmpf, Geograf, bleib bei deinen Leisten. Ich muss schon wieder was fragen:
Es geht immer noch um den Post Request: Ich benutze dynamische Routen, um den Post Request zu verarbeiten. Jetzt scheint es mir so, als ob dem dyn. Teil direkt der Inhalt des Post Requests angehängt wird. Denn ein Teil der Fehlermeldung (ein 404), die ich bekomme lautet
The requested URL /ogc/service/strassederroemerHTTP/1.1 was not found on this server.
und die Route in Bottle lautet
/ogc/service/:name
Normalerweise sollte das nur strassederroemer sein. Es scheint mir also so, als ob der erste Header vom Post Request bis zum Zeilenumbruch an den dynamsischen Teil der URL angehängt wird. Liege ich da richtig? Wenn ja, kann ich überhaupt dynamische Routen benutzen?
Hier mal meine passende Routenfunktion:
Code: Alles auswählen
@bottle.route('/wms/:name')
@bottle.route('/service/:name')
def ogc(name):
"""
Standard OWS Anfrage Route.
"""
try:
(bottle.response.header['Content-Type'],
content) = ogc_request(map_files[name])
return content
except KeyError:
bottle.abort(404)
und die Funktion ogc_request
Code: Alles auswählen
def ogc_request(map_file):
"""
Behandelt den OWS Request und übergibt ihn an das mapscript Objekt
Der Output wird gepuffert und nach content und content_type getrennt
zurückgegeben.
"""
ows_request = mapscript.OWSRequest()
if bottle.request.method == 'POST':
pass
# TODO
elif bottle.request.method == 'GET':
for key, value in bottle.request.params.items():
ows_request.setParameter(key, value)
else:
logging.debug('not able to identify request method')
bottle.abort(500, 'Request method not identifiable')
# outputbuffer starten
mapscript.msIO_installStdoutToBuffer()
try:
ows_map = mapscript.mapObj(map_file)
except IOError:
bottle.abort(404, 'Mapfile not found')
try:
ows_map.OWSDispatch(ows_request)
except:
bottle.abort(400, 'Error while dispatching OWS request')
content_type = mapscript.msIO_stripStdoutBufferContentType()
content = mapscript.msIO_getStdoutBufferBytes()
return (content_type, content)
Vielen Dank
Frank