Curl: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
Line 144: Line 144:


To use curl with [[Charles]], see: {{Internal|Charles#Using_curl_with_Charles|Using curl with Charles}}
To use curl with [[Charles]], see: {{Internal|Charles#Using_curl_with_Charles|Using curl with Charles}}
=curl and Kubernetes=
{{Internal|Kubernetes and curl|curl and Kuberenetes}}

Revision as of 17:03, 13 September 2019

Internal

Command Line Configuration

-X

The HTTP method.

-H

Specifies a request header. Multiple headers can be specified. Example:

curl -H "Authentication Bearer: <token>" -H "Content-Type: application/json" ...

Quiet Mode

-s|--silent

Content-Type

-H "Content-Type: application/json"

-u

Authentication:

curl -u username:password

--basic

Basic Authentication

--digest

Digest Authentication

-k --insecure

Insecure.

-v

Verbose. Shows more details about the request and response. A line starting with '>' means "header data" sent by curl, '<' means "header data" received by curl that is hidden in normal cases, and a line starting with '*' means additional info provided by curl.

-s, --silent

Turns on silent or quiet mode. In silent mode curl does not show progress meter or error messages.

-S, --show-error

Like silent more, it disables progress meter, but shows error messages.

-i

Show the HTTP headers in the output.

-A

Specify the User-Agent string to send to the HTTP server. To encode blanks in the string, surround the string with single quote marks. This can also be set with the -H header option. If this option is used several times, the last one will be used.

-d

Sends the specified data in a POST request to the HTTP server, in the same way that a browser does when a user has filled in an HTML form and presses the submit button. This will cause curl to pass the data to the server using the content-type application/x-www-form-urlencoded.

If the option is used more than once on the same command line, the data pieces specified will be merged together with a separating &-symbol. Thus, using "-d name=alice -d qualification=coder" would generate a post chunk that looks like 'name=alice&qualification=coder'.

If data starts with the letter @, the rest should be a file name to read the data from, or - if you want curl to read the data from stdin. Multiple files can also be specified. When --data is told to read from a file like that, carriage returns and newlines will be stripped out. If you don't want the @ character to have a special interpretation use --data-raw instead.

-d and GET

If -d is used with GET, the data is sent as a entity body.

--data-binary

If what follows after --data-binary starts with @, it is considered to be a name of a file, and the content of the file is sent as data.

curl ... --data-binary @./some-file.json ...

-I

HEAD only.

-L, --location

If the server reports that the requested page has moved to a different location (indicated with a Location: header and a 3XX response code), this option will make curl redo the request on the new place.

Secure Connection

curl https://logging-es:9200/ --capath /etc/kibana/keys --key /etc/kibana/keys/key

Download a file and write it locally

-O instructs curl to write output to a local file name like the remote file we get. Only the file part of the remote file is used. The file will be saved in the current directory.

curl -O http://ftp.gnu.org/gnu/wget/wget-1.15.tar.gz

Send REST invocations

GET

curl -X GET http://localhost:8080/novaordis-paas/project/

POST

curl -H "Content-Type: application/json" -X POST \
  -d '{"id":"1","name":"MyProject","team":"A","language":"java","size":"small"}' \
  http://localhost:8080/novaordis-paas/project/MyProject

PUT

curl -X PUT -d arg=val -d arg=val http://localhost:8080/novaordis-paas/project/MyProject

DELETE

curl -X DELETE http://localhost:8080/novaordis-paas/project/MyProject

Simulation of a HTTP Session JSessionID

curl -b "JSESSIONID=e1VBIIBFhyjU2PLU0JFNwqYu" http://localhost:8080/session-servlet/

Parallel Instances

i=0; while [ $i -lt 20 ]; do (curl http://localhost/&); ((i++)); done

Use curl with a Proxy

It is sometimes useful to configure curl to send request via a proxy. This is achieved with

curl -x http://<proxy-host>:<proxy-port> 

To use curl with Charles, see:

Using curl with Charles

curl and Kubernetes

curl and Kuberenetes