繁体   English   中英

如何使用CURL将XML作为表单字段发送

[英]How to send XML as form field using CURL

我正在尝试发布到url,发送表单数据,并且这些字段之一采用XML。 问题在于,当执行此命令时,将执行XML中的第一个“ <”以重定向命令的输出,而不仅仅是将其用作纯文本字符串。 如何在bash脚本中发送它?

这是我的sendcurl.sh的相关部分:

tags='<Tagging><TagSet><Tag><Key>TagName</Key><Value>TagValue</Value></Tag></TagSet></Tagging>'
curl   -x http://localhost:8080                         \
    -# -k                       \
    -F key=$targfile            \
    -F acl=$acl                 \
    $key_and_sig_args           \
    -F tagging=$tags  \
    -F "Policy=$p"              \
    -F "Content-MD5=$md5"       \
    -F "Content-Type=$mime"     \
    -F "file=@$srcfile"         \
    https://${bucket}.s3.amazonaws.com/

我尝试在$ tags中使用几个不同的值,但输出始终相同:

no such file or directory: Tagging...

关于如何将其作为表单字段传递的任何想法?

您的-F选项都不会被双引号引起来,这是建议的做法。 通常,这不会有问题,但是如果字符串中的字符可能会被shell误解(例如空格,小于或大于符号等),那么您将遇到问题。

在这种情况下,您只需要更改以下行:

   -F tagging=$tags

对此:

   -F tagging=\"$tags\"

请注意,您必须对双引号进行转义,因此外壳程序将允许它们不解析地使用。

完成以下操作后,curl命令的相关部分如下所示:

 -F tagging="<Tagging><TagSet><Tag><Key>TagName</Key><Value>TagValue</Value></Tag></TagSet></Tagging>"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM