如何用CURL命令行工具发送XML POST请求

10次阅读

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

如何用CURL命令行工具发送XML POST请求

curl 发送 XML POST 请求,关键是正确设置请求头(特别是 Content-Type)并传入 XML 内容。下面分几种常用方式说明:

直接在命令中写入 XML 字符串

适合简单、短小的 XML 数据,注意用单引号包裹整个数据体,避免 shell 解析特殊字符(如 >$):

curl -X POST https://api.example.com/data    -H "Content-Type: application/xml"    -d 'Alice30'

从文件读取 XML 内容

推荐用于较复杂的 XML,可提升可读性和复用性。假设 XML 存在 payload.xml 中:

  • 确保文件编码为 UTF-8,且无 bom
  • 使用 @ 符号前缀让 curl 读取文件内容
  • 仍需显式指定 Content-Type
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 会尝试变量展开

text=ZqhQzanResources