cURL is a program for making HTTP request, f. e. accessing a web site or calling a web service.

Basic Auth

In Basic Auth the username and password Base64 encoded and added to the HTTP headers. cURL can do this easily with an option.

curl --user my_user:my_pass http://localhost/my/service

Response Format

When using web services one can add a request for a specific format for the response using HTTP headers.

curl http://localhost/my/service -H "Accept: application/json"

Passing Form Parameter

curl -d "name=value&another=value" http://localhost/my/service

Passing Query Parameter

Query parameter are passed in the url by adding key/value pairs after the ? sign in the url. Example:

curl http://localhost/resource?q=query_expression&start=0&rows=0

If this url is used with curl than the parameters start and rows are being dropped and the curl process is executed in the background. Why? Because the first & tells the shell to execute the command in the background. The shell won't recognize it as part of the url.

Solution: Use double quotes.

curl "http://localhost/resource?q=query_expression&start=0&rows=0"

Passing Data from File

Instead of passing the post data from the command line it can also be read from a file:

curl http://localhost/resource -X POST -d @data.json -H "Content-Type: application/json"