用Requests POST XML数据需设Content-Type为text/xml或application/xml,XML作为字符串或bytes传入data参数;禁用json参数;推荐三重引号写多行XML并声明UTF-8编码;注意格式合法与标签闭合。

用Requests库POST XML数据,核心是设置正确的请求头(Content-Type: text/xml 或 application/xml),并将XML内容作为字符串或字节传入data参数,不能用json参数。
准备XML数据
XML可以是字符串、bytes或文件读取的内容。推荐先构造好格式正确的XML,避免因语法错误导致服务端拒绝解析。
- 用三重引号写多行XML字符串,注意缩进不影响内容,但需确保标签闭合
- 若含中文或特殊字符,建议统一用UTF-8编码,并在XML声明中注明
- 避免手动拼接XML,复杂结构可用
xml.etree.ElementTree生成后转为字符串
设置Headers并发送POST请求
必须显式指定Content-Type为text/xml或application/xml,否则服务端可能无法识别XML体。
-
data参数接收字符串(自动编码为UTF-8)或bytes;传字符串时Requests默认按UTF-8编码 - 不要用
json=...——那是为JSON设计的,会自动加application/json头并序列化字典,不适用于XML - 如需认证,可添加
Authorization等其他header字段
处理响应与常见问题
成功发送后,检查response.status_code和response.text确认服务端是否正常接收并解析。
本书全面介绍PHP脚本语言和MySOL数据库这两种目前最流行的开源软件,主要包括PHP和MySQL基本概念、PHP扩展与应用库、日期和时间功能、PHP数据对象扩展、PHP的mysqli扩展、MySQL 5的存储例程、解发器和视图等。本书帮助读者学习PHP编程语言和MySQL数据库服务器的最佳实践,了解如何创建数据库驱动的动态Web应用程序。
立即学习“Python免费学习笔记(深入)”;
- 返回400/415:大概率是
Content-Type没设对,或XML格式非法(如未闭合标签、编码声明与实际不符) - 返回200但内容异常:用
response.headers.get('Content-Type')确认响应类型,再检查response.text是否为预期的XML或错误提示 - 调试时可先用
print(xml_string.encode('utf-8'))确认发送内容,或用Wireshark/Fiddler抓包比对
完整示例代码
注意替换URL和实际XML内容:
import requests xml_data = '''''' headers = { 'Content-Type': 'text/xml; charset=utf-8', } response = requests.post( url='https://api.example.com/submit', data=xml_data, headers=headers, timeout=10 ) print(response.status_code) print(response.text) 张三 zs@example.com









