【问题标题】:cURL error on whitespace within data field数据字段中空白的 cURL 错误
【发布时间】:2016-10-19 07:51:52
【问题描述】:

我正在编写一个使用 cURL 调用 API 的 bash 脚本。我正在生成部分内容转换来自其他来源的字符串。 出于应用原因,从数据库中,空格被替换为“_SPACE_”字符串。 我正在使用

替换它
ITEM=${M//_SPACE_/ }

然后我调用 cURL 如下:

curl ... --data '{"field": "'$ITEM'"}' ...

运行脚本会在 curl 执行时返回异常

curl: (3) [globbing] unmatched close brace/bracket in column 21
org.codehaus.jackson.JsonParseException: Unexpected end-of-input in VALUE_STRING
 at [Source: org.apache.catalina.connector.CoyoteInputStream@185ff06c; line: 4, column: 139]

【问题讨论】:

    标签: bash shell curl whitespace


    【解决方案1】:

    例外

    org.codehaus.jackson.JsonParseException: Unexpected end-of-input in VALUE_STRING ...
    

    说您的代码库中的库无法解析通过 curl 发送的数据对象。我可以想象您的 --data '{"field": "'$ITEM'"}' 对象由于单引号 '$ITEM' 而失败。你能发送完整的数据对象或脚本吗?

    【讨论】:

    • 单引号不是问题,如果我将空格占位符替换为另一个字符(例如 ITEM=${M//_SPACE_/_}),cURL 调用就可以正常工作
    • 你是否回应了替换,看看它是否以正确的方式替换?我可以建议测试 sed。 sed 's/_SPACE_/ /g'
    • 如果发现此帖子stackoverflow.com/a/23914127/5779103 中描述的问题。您的 JSON 必须以不同的方式引用。文字字符串。 curl ... --data "{\"field\" : \"$ITEM\"}" ...
    • 在 POSTMAN 中复制和粘贴 echo 的结果可以正常工作,这意味着问题出在空格的“编码”中
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-14
    • 1970-01-01
    相关资源
    最近更新 更多