gpt4 book ai didi

python - 使用来自 python 的 XML POST flask 服务器

转载 作者:数据小太阳 更新时间:2023-10-29 01:54:49 31 4
gpt4 key购买 nike

我在 pythonanywhere 上启动并运行了一个 flask 服务器我正在尝试编写一个 python 脚本,我可以在本地运行它,它会触发一个特定的响应——让我们说服务器时间,为了这个讨论。关于如何编写此过程的 Flask 服务器端的文档数不胜数,但关于如何编写可触发 Flask 应用程序运行的内容的文档很少。我尝试以简单的 curl 命令形式发送 XML,例如

curl -X POST -d '<From>Jack</From><Body>Hello, it worked!</Body>' URL

但这似乎不起作用(关于推荐 header 的错误)。

谁能告诉我编写一些可以发送到监听 flask 服务器的 XML 的正确方法。

谢谢,

jack

最佳答案

首先,我会将 -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(或您选择的任何其他解析器)获得解析错误。

关于python - 使用来自 python 的 XML POST flask 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29638159/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com