Изменение XML-запроса на Flask с помощью ElementTree

#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']) )