#python #xml #flask #response
#python #xml #flask #ответ
Вопрос:
Я новичок в python. Что я не хочу решать, так это изменить POST-запрос (xml через cURL) на Flask. Спасибо за любую помощь.
Простой серверный код:
from flask import Flask, request
import xml.etree.ElementTree as etree
app = Flask(__name__)
@app.route("/", methods=['GET', 'POST'])
def r_xml():
xml_data = request.form['TEST']
tree = etree.parse(xml_data)
root = tree.getroot()
attrib = {}
element = root.makeelement('NEWITTEM', attrib)
root.append(element)
return xml_data
Запрос cURL:
curl -X POST http://127.0.0.1:5000/test -d "TEST=<xml><Name1>MyName</Name1><Name2>YourName</Name2></xml>"
Я получаю этот код ошибки:
OSError: [Errno 22] Invalid argument
Комментарии:
1. Что получается на стороне сервера? сделать
print(xml_data)
. Где вы получаете ошибку?OSError
— на стороне клиента или на стороне сервера?2. Ошибка на стороне сервера. На стороне клиента это:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <title>500 Internal Server Error</title> <h1>Internal Server Error</h1> <p>The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.</p>
Ответ №1:
Проблема в том, что вы вызываете http://127.0.0.1:5000/test
, пока метод r_xml
указан путем /
, а не /test
(см. @app.route("/", methods=['GET', 'POST'])
)