CURLで単純なPOSTコマンドを使用する方法の例は多数見つかりましたが、完全なHTTP POSTコマンドを送信する方法の例は見つかりませんでした。
s=1&r=33
)私が見つけたのは、
echo "this is body" | curl -d "ss=ss&qq=11" http://localhost/
それはうまくいきません、そしてそれはボディとしてHTTPパラメータを送ります。
コメントするのに十分な評判がないので、助けになることを期待して答えとしてこれを残しなさい。
curl -L -v --post301 --post302 -i -X PUT -T "${aclfile}" \
-H "Date: ${dateValue}" \
-H "Content-Type: ${contentType}" \
-H "Authorization: AWS ${s3Key}:${signature}" \
${Host}:${port}${resource}
これは私がS3バケットのacl put操作に使用したものです。ヘッダは-Hに、xmlファイルであるbodyは-Tに続く$ {aclfile}にあります。あなたは出力からそれを見ることができます:
/aaa/?acl
* About to connect() to 192.168.57.101 port 80 (#0)
* Trying 192.168.57.101...
* Connected to 192.168.57.101 (192.168.57.101) port 80 (#0)
> PUT /aaa/?acl HTTP/1.1
> User-Agent: curl/7.29.0
> Host: 192.168.57.101
> Accept: */*
> Date: Thu, 18 Aug 2016 08:01:44 GMT
> Content-Type: application/x-www-form-urlencoded; charset=utf-8
> Authorization: AWS WFBZ1S6SO0DZHW2LRM6U:r84lr/lPO0JCpfk5M3GRJfHdUgQ=
> Content-Length: 323
> Expect: 100-continue
>
< HTTP/1.1 100 CONTINUE
HTTP/1.1 100 CONTINUE
* We are completely uploaded and fine
< HTTP/1.1 200 OK
HTTP/1.1 200 OK
< x-amz-request-id: tx00000000000000000001f-0057b56b69-31d42-default
x-amz-request-id: tx00000000000000000001f-0057b56b69-31d42-default
< Content-Type: application/xml
Content-Type: application/xml
< Content-Length: 0
Content-Length: 0
< Date: Thu, 18 Aug 2016 08:01:45 GMT
Date: Thu, 18 Aug 2016 08:01:45 GMT
<
* Connection #0 to Host 192.168.57.101 left intact
url paramsに "+"のような特殊記号が含まれている場合、それらのすべてのパラメータ(特殊記号を含む)に--data-urlencodeを使用します。
curl -G -H "Accept:..." -H "..." --data-urlencode "beginTime=${time}+${zone}" --data-urlencode "endTime=${time}+${zone}" "${url}"
HTTPの「パラメータ」はURLの一部です。
"http://localhost/?name=value&othername=othervalue"
基本認証には別のオプションがあります。カスタムヘッダーを作成する必要はありません。
-u "user:password"
POST "body"は--data
(application/x-www-form-urlencoded
の場合)または--form
(multipart/form-data
の場合)のいずれかを介して送信できます。
-F "foo=bar" # 'foo' value is 'bar'
-F "foo=<foovalue.txt" # the specified file is sent as plain text input
-F "[email protected]" # the specified file is sent as an attachment
-d "foo=bar"
-d "foo=<foovalue.txt"
-d "[email protected]"
-d "@entirebody.txt" # the specified file is used as the POST body
--data-binary "@binarybody.jpg"
要約すると:
curl -d "this is body" -u "user:pass" "http://localhost/?ss=ss&qq=11"