多行curl命令

46

我希望你能够协助翻译修改使用谷歌浏览器开发工具捕获的curl请求。

以下是该命令的样式:

curl "http://WEBSITE" -H "Host: WEBSITE" -H "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" -H "Accept-Language: en-US,en;q=0.5" --compressed -H "Content-Type: multipart/form-data; boundary=---------------------------1184875127259" --data-binary "-----------------------------1184875127259"^

"Content-Disposition: form-data; name=""FORM1"""^

"FORM1DATA"^
"-----------------------------1184875127259"^

"Content-Disposition: form-data; name=""FORM2"""^

"FORM2DATA"^
"-----------------------------1184875127259"^

"Content-Disposition: form-data; name=""FORM3"""^

"FORM3DATA"^
"-----------------------------1184875127259"^

"Content-Disposition: form-data; name=""embed"""^

"true"^
"---------------------------1184875127259--"^
""

Form#是表单的名称,Form#Data是我在表单中提交的数据。

如何将其转换为一条单行的curl请求,以便我只需将其复制到命令行中并执行,就可以完成与浏览器相同的操作?

4个回答

69

对于Linux和MacOS:使用\转义字符:

curl "http://WEBSITE" -H "Host: WEBSITE" \
-H "Accept: text/html,application/xhtml+xml \
,application/xml;q=0.9,*/*;q=0.8"

对于Windows:使用^转义字符:

curl "http://WEBSITE" -H "Host: WEBSITE" ^
-H "Accept: text/html,application/xhtml+xml ^
,application/xml;q=0.9,*/*;q=0.8"

10
@DirkSchumacher,不要在 Windows 中使用反斜杠(\)进行行转义,而是使用 ^。反斜杠符号用于 macOS。 - Saini Arun
@saini-arun:好提示!-)谢谢!如果我多动一下脑筋,我本可以自己解决的...我只是反思了一下,如果我知道环境问题可能会被考虑,分享基本设置总是很好的。 - Dirk Schumacher
1
对于Windows,您可以像上面建议的那样使用插入符号(^)。例如:curl -H "X-Auth-Token: 9HqLlyZOugoStsXCUfD_0YdwnNnunAJF8V47U3QHXSq" ^ -H "X-User-Id: aobEdbYhXfu5hkeqG" ^ -H "Content-type:application/json" ^ -d '{"avatarUrl": "http://domain.tld/to/my/own/avatar.jpg"}' ^ http://localhost:3000/api/v1/users.setAvatar - Raghav
请注意,如果尝试将cURL请求作为“原始文本”导入Postman,请使用Chrome Dev Tools中的Copy >>“Copy as cURL(bash)”来获取Postman期望的请求格式。 “Copy as cURL(cmd)”使用包括^作为行分隔符的格式,而Postman会抛出读取错误:“导入Curl时出错:只能提供URL,而不带有前置选项。所有其他输入必须通过选项指定。” - Dave Kidder

6

2
我同意!当你在Windows上时,Git Bash是非常棒的。 - Alfredo G Marquez

4
注意:要注意多行命令的缩进倾向,因为它会嵌入空格并使curl命令出错。 sed命令将变量内的嵌入式空格替换为%20字符串,以便可以在传递为变量的字符串中使用嵌入式空格。
messageout="The rain in Spain stays mainly in the plains"
summaryout="This is a test record"
alertnameout="Test Alert"


curl -v -silent request POST "URL.com?\
summary=`echo $summaryout | sed -e 's/ /%20/g'`&\
alertname=`echo $alertnameout | sed -e 's/ /%20/g'`&\
message=`echo $messageout | sed -e 's/ /%20/g'`"

3

\在Windows中的等效表示为^


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接