Ich habe hier grade ein Problem mit Werkzeug, bzw. Flask. Ich sende über ein proxy - Skript (in php) Post Daten an eine Flask - Route. Mittels dem Request - Objekt will ich auf die Daten zugreifen, die mittels POST geschickt werden. Dabei ist zu beachten, dass die Daten im POST-Body gesendet werden und nicht, wie üblich als key=value Paare. Ich dachte, eigentlich, die Daten würden im request.data Attribut gespeichert, jedoch erkennt Werkzeug wohl den Content-type und parst den POST Request nach request.form, so dass ich nun ein ImmutableDict erhalte:
Code: Alles auswählen
ImmutableMultiDict([('<wfs:GetFeature xmlns:wfs', u'"http://www.opengis.net/wfs" service="WFS" version="1.0.0" xsi:schemaLocation="http://www.open
gis.net/wfs http://schemas.opengis.net/wfs/1.0.0/WFS-transaction.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><wfs:Query typeName="ms:bahnhof"
xmlns:ms="http://mapserver.gis.umn.edu/mapserver"/></wfs:GetFeature>')])
Langer Rede kurze Frage: Kann ich das Parsen der POST Daten irgendwie verhindern, so dass ich mittels request.data auf den POST Body zugreifen kann?
Relevanter Teil aus dem PHP Proxy-Skript:
Der Teil aus der Flask Route:php hat geschrieben: $ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, True);
curl_setopt($ch, CURLOPT_POST, True);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$response = curl_exec($ch);
curl_close($ch);
Code: Alles auswählen
def dispatch_request(ows_request, ows_map):
if request.method == 'POST':
postrequest = ''
logging.debug("FORM")
logging.debug(request.form)
# leer:
logging.debug("DATA")
logging.debug(request.data)
try:
for line in request.data:
postrequest += line
ows_request.postrequest = postrequest