用curl发送XML POST请求需正确设置Content-Type为application/xml,支持内联字符串(单引号包裹)或文件读取(@filename),并推荐调试选项如-v、--fail及--data-binary等。

用 curl 发送 XML POST 请求,关键是正确设置请求头(特别是 Content-Type)并传入 XML 内容。下面分几种常用方式说明:
直接在命令中写入 XML 字符串
适合简单、短小的 XML 数据,注意用单引号包裹整个数据体,避免 shell 解析特殊字符(如 、>、$):
curl -X POST https://api.example.com/data \ -H "Content-Type: application/xml" \ -d '' Alice 30
从文件读取 XML 内容
推荐用于较复杂的 XML,可提升可读性和复用性。假设 XML 存在 payload.xml 中:
curl -X POST https://api.example.com/data \ -H "Content-Type: application/xml" \ -d @payload.xml
添加其他常用选项(增强可靠性)
实际调用中常需补充这些参数:
-
-v:查看详细请求/响应过程(调试必备) -
--fail:HTTP 状态码非 2xx 时返回非零退出码 -
-k:跳过 HTTPS 证书验证(仅测试环境用) -
-H "Accept: application/xml":声明期望接收的响应格式 -
--data-binary:比-d更严格地传输原始字节(尤其含空格或二进制边界时)
处理带命名空间或特殊字符的 XML
如果 XML 含有双引号、换行或命名空间声明,单引号可能不够用:
- 优先用文件方式(最稳妥)
- 若必须内联,可用
$'...'(Bash 特性)支持转义,例如:$'He said: "Hi" ' - 避免用双引号包裹整个
-d值,否则 shell 会尝试变量展开










