如何在
-d
参数中使用curl.exe 发送双引号字符。 我不想对双引号进行 URL 编码。 由于 -d
数据需要用双引号引起来,我似乎无法让它工作。
或者curl.exe 是否有另一个标志告诉它使用文件内容作为整个表单发布数据?
我的
curl.exe
适用于这种形式:
-d "{\"param\":\"value\"}"
即数据周围的双引号,以及内部用反斜杠屏蔽的双引号
你肯定可以避开双引号。如何执行此操作取决于您未指定的操作系统和 shell。在 Windows 上,您可以使用 ^ 作为转义字符。
你也可以这样做:
curl [...] -d @filename
...从名为 filename 的文件中读取发布数据。
Google 和/或人类是你的朋友。
对于双引号问题的转义,我发现从 shell 中可以将双引号增加三倍:
curl -d {"""foo""":"""bar"""}
在批处理文件中使用双引号时:
curl -d {""foo"":""bar""}
首先在 shell 中进行测试是非常烦人的。
您可以用单引号将数据括起来,并在内部使用双引号。
PowerShell 中的示例
curl.exe https://httpbin.org/anything `
-H 'Content-Type: application/json' `
-d '{ "this": "is proper json" }'.Replace('"', '""')
请注意,cURL 内置于 Windows 10 中,但 PowerShell 使用别名来隐藏它,因此您必须使用
curl.exe
如果您在 Powershell 中执行此操作,则需要用单引号引用整个文本块,并且仍然对引号进行转义。 即 -d '{\"param\":\"value\"}'
在 Win11 VSCode Powershell 7 终端上测试
老问题,但我不喜欢任何解决方案(实际上
-d @filename
本来就可以,但它对我不起作用)。因此,在阅读文档(https://curl.se/docs/manpage.html)后,我最终使用的是:
echo '{ "a": 1, "b": 2 }' | curl -H "Content-Type: application/json" -d "@-" http://localhost:8080
有一种东西叫美元斜线。
def cmd = $/ curl -d '{"param":"value"}' -X POST https://example.com/service /$
sh cmd