Python Flask 应用程序无法解析 XML 请求数据

标签 python xml flask

我编写了一个简单的 Flask 应用程序来解析 XML 请求并发送响应。但是,当我尝试解析 XML 请求时,我得到“必须使用 Request 实例作为第一个参数调用未绑定(bind)方法 get_data()(什么也没有)”。

我已经根据 https://werkzeug.palletsprojects.com/en/0.15.x/wrappers/#werkzeug.wrappers.BaseRequest.get_data 尝试了带参数的 get_data 变体'。我也在 SO 中看过类似的问题,但这对我没有帮助。

from flask import Flask, Response, Request
import xmltodict
app = Flask(__name__)
@app.route("/")
def index():
    return "Hello"

@app.route("/testapp", methods = ['POST'], strict_slashes=False)

def parseRequest():
    content = xmltodict.parse(Request.get_data)
    print content

if __name__ == "__main__":
    app.run(host='0.0.0.0')

我使用curl发送请求

curl -i -X POST "http://x.x.x.x:5000/testapp" -H "accept: application/xml" -H "Content-Type: text/xml" --data @test.xml

这是 XML 文件的内容。

<soapenv:Envelope  xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    <soapenv:Header xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
...
    </soapenv:Header>
    <soapenv:Body>
        <com:qRequest xmlns:com=http://masked1          
                xmlns:xcom=http://masked2  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <com:Query xsi:type="xcom:DynamicNamedQuery">
                <xcom:Identifier>getDetails</xcom:Identifier>
                <xcom:Parameters>
                    <paramvalue>ABCDE</paramvalue>
                </xcom:Parameters>
            </com:Query>
        </com:qRequest>
    </soapenv:Body>
</soapenv:Envelope>

这是我得到的错误 - “TypeError: 必须使用 Request 实例作为第一个参数调用未绑定(bind)的方法 get_data()(什么也没有)”。我也尝试过将其解码为 utf8,但我不认为这是问题所在。

最佳答案

工作代码。只是在您的案例中错误地使用了类

import xmltodict
from flask import Flask, request

app = Flask(__name__)
@app.route("/")
def index():
    return "Hello"

@app.route("/testapp", methods = ['POST', 'GET'], strict_slashes=False)
def parseRequest():
    content = xmltodict.parse(request.get_data())
    print (content)
    return content


if __name__ == "__main__":
    app.run(host='0.0.0.0')

关于Python Flask 应用程序无法解析 XML 请求数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57648889/

相关文章:

php - 将 xPath 用于 sitemap.xml

java - 如何在首选项 Activity 中显示应用程序版本?

python - 无法在后端使用 python flask 和 ssl 验证 Facebook webhook 订阅中的 URL

python - 最好将所有内容集中在 m/v/c 文件夹下,或者将模块文件夹与 m、v、c 文件分开?

Python 加载 windows 库 C# 转换

python - 如何根据登录的用户状态连接三个不同的屏幕?

python - 执行完成后清除在 Jupiter 单元格中定义的所有变量

python - 为什么 locals() 会返回一个奇怪的自引用列表?

xml - 哪种 XML 结构最适合全能 API?

python - flask 操作错误 : unable to open database file using sqlite3