Flask接收SOAP服务返回的XML响应并保存为本地文件的实现方法
这个需求完全可以实现,核心逻辑是你配置的endpoint_response对应的Flask路由接收SOAP服务POST过来的XML原始数据,写入本地文件即可。
实现步骤
1. 安装依赖
首先安装Flask框架:
pip install flask
2. 编写Flask服务端代码
from flask import Flask, request import os from datetime import datetime app = Flask(__name__) # 配置XML文件保存目录,代码会自动创建该目录 SAVE_DIR = "./soap_responses" os.makedirs(SAVE_DIR, exist_ok=True) @app.route("/save_response", methods=["POST"]) def save_soap_response(): # 直接获取请求体中的原始XML数据 xml_content = request.get_data(as_text=True) # 生成唯一文件名避免覆盖,你也可以从XML内容中提取order、id_s等业务字段作为文件名前缀 file_name = f"soap_response_{datetime.now().strftime('%Y%m%d%H%M%S%f')}.xml" file_path = os.path.join(SAVE_DIR, file_name) # 写入本地文件 with open(file_path, "w", encoding="utf-8") as f: f.write(xml_content) # 返回200状态码告知SOAP服务接收成功 return "success", 200 if __name__ == "__main__": # 监听端口和你配置的endpoint_response地址保持一致 app.run(host="0.0.0.0", port=5000, debug=True)
3. 运行测试流程
- 先启动上面编写的Flask服务,确认
http://localhost:5000可以正常访问 - 运行你现有SOAP客户端代码,触发SOAP服务向指定地址推送异步响应
- 到
SAVE_DIR配置的目录下即可查看生成的XML文件
注意事项
- 如果SOAP服务和Flask服务不在同一台机器,
endpoint_response需要替换为Flask服务所在机器的公网IP/域名+端口,确保SOAP服务可以正常访问到该地址 - 如果SOAP服务推送请求有签名、身份校验等要求,可以在路由中通过
request.headers获取请求头完成校验后再存储文件 - debug模式仅用于开发环境,生产环境需要关闭debug,使用WSGI服务器部署Flask服务
内容的提问来源于stack exchange,提问作者jmp
相关产品推荐
相关产品推荐

