我试图通过命令行将参数传递给cURL,这样:
curl -s -X POST -H "Content-Type: text/xml" -H "Cache-Control: no-cache" -d '<Data Token="someToken" Name='"$appName"' ID='"$someVar"' ParseAppID='"$someVar"' ParseRESTKey='"$someVar"' AndroidPackage='"$someVar"' Version="1"></Data>' 'https://prefix.something.com/somePath?InputType=Xml'
(此行实际上是从Postman应用程序中提取的。)
我用Google搜索了这个问题并找到了许多对我不起作用的解决方案(链接是过去的问题......):
'before...'"${someVar}"'...after...'
。无法完成请求。-d @fileName)
。无法发布。<Data>
令牌周围的单引号 - 但命令显然无法接受此类替换。我得到的错误是<Error></Error>
或The server encountered an error and could not complete your request.
是否有可能存在其他解决方案? 有没有人遇到过这样的问题?
我会很乐意帮助你。
答案 0 :(得分:5)
您不会像ID
那样围绕Name
的值提供引号。也就是说,你需要
'<Data Token="someToken" Name="'"$appName"'" ...>'
^^^
|||
||+- shell quote to protect $appName
|+- shell quote enclosing the XML
+- literal quote embedded in the XML
导致字符串(假设为appName=foo
)
<Data Token="someToken" Name="foo" ...>