You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将CURL GET获取的XML数据传入CURL POST请求?

实现将GET获取的XML数据传入POST请求的方法

方法一:用变量存储转义后的XML(更易读)

  1. 获取并转义XML数据
    先用curl执行GET请求拿到XML,再通过jq将XML转义为JSON兼容的字符串(自动处理双引号、换行、反斜杠等特殊字符),存入环境变量:
XML_DATA=$(curl -X GET 'http://local/something/something2' \
  -H 'accept: application/json' \
  -H 'authorization: auth' | jq -Rsa .)
  • jq -Rsa .的作用:-R读取原始字符串,-s合并所有行,-a将内容转义为符合JSON规范的字符串。
  1. 执行POST请求
    将转义后的XML变量插入到POST的JSON请求体中:
curl -X POST 'http://something/something2' \
  -H 'accept: application/json' \
  -H 'authorization: auth' \
  -H 'Content-Type: application/json' \
  -d '{
    "components": [
      {
        "locator": "sample",
        "config": '"$XML_DATA"'
      }
    ]
  }'

方法二:单命令合并执行(无需变量)

直接将GET请求的结果通过jq嵌入到POST的JSON结构中,一步完成:

curl -X POST 'http://something/something2' \
  -H 'accept: application/json' \
  -H 'authorization: auth' \
  -H 'Content-Type: application/json' \
  -d "$(jq -n --arg xml "$(curl -X GET 'http://local/something/something2' \
    -H 'accept: application/json' \
    -H 'authorization: auth')" \
    '{components: [{locator: "sample", config: $xml}]}')"
  • jq -n --arg xml <内容>:-n创建新的JSON对象,--arg将XML内容作为变量传入,直接构造目标JSON结构。

注意事项

  • 必须确保系统安装了jq工具(大部分Linux发行版可通过包管理器安装,比如apt install jq或yum install jq),手动转义XML会非常繁琐(需替换双引号为\"、换行符为\n、反斜杠为\\等),强烈推荐用jq避免出错。
  • 如果GET请求返回的XML体积过大,建议使用方法一,避免命令行过长导致问题。

内容的提问来源于stack exchange,提问作者cojocaru robert

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 08:25:56