curl cheat sheet

curl cheat sheet

The -X option specifies the HTTP method. The HTTP methods to be specified are as follows

HTTP Methods

You can pass a request body by specifying the -d option followed by a string. The request body is passed as a string.

curl -X POST -d '{"key":["aaa","bbb"]}'

The -I option displays response headers.

curl -I -X POST

The -i option displays response headers and response body.

curl -X POST -d '{"key":["aaa","bbb"]}' -i

Pass request headers with the -H option. The following passes

curl -X POST -H

To pass multiple request headers, use multiple -H options, such as -H 'xxx: yyy' -H 'aaa: bbb'.

Passing request headers with curl

To pass request headers, use the -H option, such as -H ‘Bearer hogehoge’.

curl -0 -i -X GET -H 'Authorization: Bearer hoge'

Bearer Certification:「

Benchmarking with curl

You can use the -w option in curl for benchmark testing.

curl -X GET -o /dev/null -w "%{time_total}\"

Hide the response body with -o /dev/null.

The variables available are (there are many more)

time_totalTime to complete download (seconds)
time_starttransferTime (in seconds) to receive the first byte of the response

Put a new line at the end of the response body

To put a newline code at the end of the curl command, use -w “\n” to put a newline code and make it easier to read.

Specify multiple query strings

If you specify multiple query strings, such as\&hoge2=fuga2, you need to escape the & from the & mark.

curl -X GET

Content-Type:application/x-www-form-urlencoded when request header is unspecified in curl

If you do not specify the request header in the curl command, it will be Content-Type:application/x-www-form-urlencoded.

curl --verbose https://~~/ > /dev/null

You can see that the Content-Type of the request header is application/x-www-form-urlencoded.

To prevent this, you need to explicitly set -H ‘ContentType:xxx’.

Specify HTTP1.0, HTTP1.1, HTTP2.0

The curl -0 option sends the request with HTTP1.0.

The curl –http1.1 option sends a request with HTTP1.1.

curl –http2 option sends a request with HTTP2.0.

Specify the request body with a heapdocument (Linux)

The request body is specified with the -d option. Then, the request body can be specified in a heared document with @- and EOF.

$ curl -X POST -d @- <<EOF> {
> key:value
> }

Running curl commands without a proxy

In some cases, a proxy may get in the way and prevent curl commands from being executed. In such cases, use the --noproxy option to specify a host that does not use a proxy.

curl --noproxy localhost -X GET http://localhost:8080/~~~

curl to https://~~~ with curl in Windows 10

Why can't cURL properly verify a certificate on Windows?
When I try to use Curl on windows, to retrieve an https url, I get the dreaded "connection error (60)." The exact error message is: curl: (60) SSL certific...

I thought curl on Windows 10 does not support the https protocol, but if I enclose the URL in double quotes, it works fine.

SSL Client Authentication

For SSL client authentication with curl, specify a .pem file. .pfx files do not seem to be supported.

curl --cert hoge.pem ~

If it is in pfx format, it must be converted to pem format using the following openssl command.

openssl pkcs12 -in ./hoge.pfx -out hoge.pem -nodes -clcerts

URL encoding

Here is an example of encoding query parameters with the curl command in Windows 10.

Use the “-G” and “–data-urlencode” options.

Hyphens and other characters must also be URL encoded.

curl -G -X GET http://localhost:8080/test --data-urlencode "hoge1-id=fuga1" --data-urlencode "hoge2-id=fuga2"

Copy the curl command from Chrome Developer Tools

You can access the appropriate URL in Chrome and copy the curl command (both win and bash) from the Network tab of the Chrome Developer Tools.


JSON parse error: Invalid UTF-8 ~(Windows)

If you include Japanese characters in the request body using the curl command on Windows, you will get a “JSON parse error: Invalid UTF-8 start byte ~” error.

If you want to include Japanese characters in the request body using the curl command on Windows, prepare a json file.

Specify the file with the “-d” option and “@”.

curl -X POST -d @sample.json http://localhost:8080/hoge



Sending local files with curl POST

Use the “-F” option to send local files with curl.

curl -X POST -F file1=@/path/to/file.json https://~

The file is specified in the form @filename.