Во-первых, я хотел бы добавить -H "Content-Type: text/xml"
к заголовкам в локонов вызова, так что сервер знает, чего ожидать. Было бы полезно, если бы вы разместили код сервера (не обязательно все, но, по крайней мере, что не удается).
Для отладки это я хотел бы использовать
@app.before_request
def before_request():
if True:
print "HEADERS", request.headers
print "REQ_path", request.path
print "ARGS",request.args
print "DATA",request.data
print "FORM",request.form
Это немного грубо, но помогает увидеть, что происходит при каждом запросе. Включите и выключите с помощью инструкции if, если необходимо, при отладке.
Выполнение запроса без заголовка xml в вызове cURL отправляет данные в словарь request.form. Добавление определения заголовка xml приводит к появлению данных в файле request.data. Не зная, где ваш сервер терпит неудачу, приведенное выше должно дать вам хотя бы намек на то, как действовать.
EDIT со ссылкой на комментарий ниже:
Я хотел бы использовать отличную xmltodict библиотеку. Используйте для теста:
import xmltodict
@app.before_request
def before_request():
print xmltodict.parse(request.data)['xml']['From']
с этим Curl вызова:
curl -X POST -d '<xml><From>Jack</From><Body>Hello, it worked!</Body></xml>' localhost:5000 -H "Content-Type: text/xml"
печатает 'Джек' без проблем.
Обратите внимание, что этот вызов был изменен из вашего вопроса - добавлен тег «xml», поскольку для XML требуется корневой узел (он называется xml tree по какой-либо причине ..). Без этого тега вы получите ошибку синтаксического анализа из xmltodict (или любого другого парсера, который вы выберете).
ИТАК, когда я добавить тип содержимого и before_request позвонить я вернусь: REQ_path/Тестирование ARGS ImmutableMultiDict ([]) DATA Jack ФОРМА ImmutableMultiDict ([]) Итак, я полагаю, мой вопрос в том, как мне получить «имя» изнутри Flask (я пробовал request.data и request.DATA.name и т. д.) и в качестве продолжения, как бы передать ARGS в XML (например, если бы я хотел моя служба требует имя пользователя и пароль) Cheers @GC_Python –
JMzance
@JMzance, см. редактирование оригинального ответа. –