【问题标题】:How to send double quotes inside JSON curl request如何在 JSON curl 请求中发送双引号
【发布时间】:2021-01-12 08:53:23
【问题描述】:

我想在 shell 脚本的 CURL 请求中发送这个字符串:

"google-site-verification=O_Kd7lqvCvpBz7fzEeUKGVKBmsAsfJgaJuh3PZRnrsk"

为此,我正在使用此脚本:

OVH_HTTP_METHOD="POST"
OVH_HTTP_QUERY="$OVH_API_URL/$OVH_API_END_POINT_DOMAIN_ZONE_DNS/domain.com/$OVH_API_END_POINT_DOMAIN_ZONE_DNS_RECORD"
OVH_FIELD_TYPE="TXT"
OVH_SUB_DOMAIN=""
OVH_TARGET=""google-site-verification=O_Kd7lqvCvpBz7fzEeUKGVKBmsAsfJgaJuh3PZRnrsk""
OVH_HTTP_BODY="{\"fieldType\":\"$OVH_FIELD_TYPE\",\"subDomain\":\"$OVH_SUB_DOMAIN\",\"target\":\"$OVH_TARGET\"}"

curl -X $OVH_HTTP_METHOD \
    $OVH_HTTP_QUERY \
    -H "Content-Type: application/json" \
    -H "X-Ovh-Application: $OVH_API_APPLICATION_KEY" \
    -H "X-Ovh-Timestamp: $OVH_TIME" \
    -H "X-Ovh-Signature: $OVH_SIG" \
    -H "X-Ovh-Consumer: $OVH_API_CONSUMER_KEY" \
    --data "$OVH_HTTP_BODY"

但我系统地收到此错误消息:

{"message":"Invalid JSON received","httpCode":"400 Bad Request","errorCode":"INVALID_JSON"}

使用 curl -v 更新:

你有什么办法解决这个问题吗?

谢谢 L.

【问题讨论】:

  • OVH_TARGET="\"google-site-verification=O_Kd7lqvCvpBz7fzEeUKGVKBmsAsfJgaJuh3PZRnrsk\""
  • 如果您不依赖字符串中的变量替换,您可以使用单引号作为文字字符串:'"google-site-verification=XXXXXX"'。还要确保您不发布敏感信息。
  • @Raman Sailopal:我尝试过同样的错误
  • @Jorge Bellon:同样的问题(这些信息是假的没问题)
  • 好的。您介意在打开-v(详细)选项的情况下发布该 curl 命令的输出吗?这应该显示请求的主体,以验证 JSON 验证的问题所在。

标签: json linux shell curl


【解决方案1】:

解决方案如下:变量必须像这样转义:

OVH_TARGET="\\\"google-site-verification=O_Kd7lqvCvpBz7fzEeUKGVKBmsAsfJgaJuh3PZRnrsk\\\""

【讨论】:

    猜你喜欢
    • 2016-10-09
    • 2019-12-15
    • 2021-11-30
    • 2013-07-01
    • 2023-03-25
    • 1970-01-01
    • 2020-04-05
    • 1970-01-01
    • 2017-11-14
    相关资源
    最近更新 更多