webdevqa.jp.net

マルチラインカールコマンド

Google Chrome Dev Toolsでキャプチャされた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は、フォームで送信したデータです。

これを単一行のカールリクエストにするにはどうすればよいですか?コマンドラインにコピーして、ブラウザーと同じことを実行できますか?

17
Bijan

使用 \複数行入力のエスケープ文字

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

注:スペースを埋め込み、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'`"
1
h. samm