POST 烧瓶服务器 XML 来自 python
POST flask server with XML from python
我有一个 Flask 服务器,运行正在 pythonanywhere 上运行,我正在尝试编写一个 python 脚本,我可以在本地 运行 触发一个特定响应-为了讨论起见,可以说服务器时间。
关于如何编写此过程的 Flask 服务器端的文档数不胜数,但是 non/very 关于如何编写可以触发 Flask 应用程序的内容 运行 的文档很少。
我尝试以简单的 curl 命令形式发送 XML,例如
curl -X POST -d '<From>Jack</From><Body>Hello, it worked!</Body>' URL
但这似乎不起作用(有关推荐的错误 headers)。
有人可以让我知道编写一些 XML 的正确方法,可以将其发送到监听烧瓶服务器。
谢谢,
杰克
首先,我会将 -H "Content-Type: text/xml"
添加到 cURL 调用中的 header,以便服务器知道会发生什么。如果您发布服务器代码(不一定是所有内容,但至少是失败的部分)将会很有帮助。
为了调试这个我会使用
@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 语句打开和关闭它。
运行 您在 cURL 调用中没有 xml header 的请求将数据发送到 request.form 字典。添加 xml header 定义会导致数据出现在 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"
'Jack' 打印出来没有问题。
请注意,此调用已根据您的问题进行了修改 - 添加了 'xml' 标记,因为 XML 需要根节点(称为 xml 树 是有原因的……)。如果没有此标记,您将从 xmltodict(或您选择的任何其他解析器)得到解析错误。
我有一个 Flask 服务器,运行正在 pythonanywhere 上运行,我正在尝试编写一个 python 脚本,我可以在本地 运行 触发一个特定响应-为了讨论起见,可以说服务器时间。 关于如何编写此过程的 Flask 服务器端的文档数不胜数,但是 non/very 关于如何编写可以触发 Flask 应用程序的内容 运行 的文档很少。 我尝试以简单的 curl 命令形式发送 XML,例如
curl -X POST -d '<From>Jack</From><Body>Hello, it worked!</Body>' URL
但这似乎不起作用(有关推荐的错误 headers)。
有人可以让我知道编写一些 XML 的正确方法,可以将其发送到监听烧瓶服务器。
谢谢,
杰克
首先,我会将 -H "Content-Type: text/xml"
添加到 cURL 调用中的 header,以便服务器知道会发生什么。如果您发布服务器代码(不一定是所有内容,但至少是失败的部分)将会很有帮助。
为了调试这个我会使用
@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 语句打开和关闭它。
运行 您在 cURL 调用中没有 xml header 的请求将数据发送到 request.form 字典。添加 xml header 定义会导致数据出现在 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"
'Jack' 打印出来没有问题。
请注意,此调用已根据您的问题进行了修改 - 添加了 'xml' 标记,因为 XML 需要根节点(称为 xml 树 是有原因的……)。如果没有此标记,您将从 xmltodict(或您选择的任何其他解析器)得到解析错误。