What is Curl?
Curl is a command-line utility for transferring data to or from a remote server using one of the supported protocols. Developers use Curl to test APIs, send requests to the server, view server response headers, and load-test APIs. Curl supports over 25+ protocols, including HTTP, HTTPS, FTP, FTPS, and SFTP, has built-in support for SSL certificates, supports HTTP POST, HTTP PUT, FTP file upload, web form submission, user authentication, HTTP Cookies, and more.
What is an HTTP body?
The HTTP body is the data sent in an HTTP message to the other side during client-server communication. The HTTP body can be divided into two types: single resource bodies, which contain a single file identified by the Content-Length and Content-Type headers, and multi-resource bodies, which contain multiple parts of different types, typically used for HTML form multiple file uploads. Not all HTTP messages have a body; for example, GET, HEAD, DELETE, and OPTIONS methods cannot have a body.
Can I send data in the body of an HTTP POST request?
Yes, you can send any data to a server in the body of the HTTP POST request. HTTP POST requests need a Content-Type header that identifies the data type in the POST request body to allow the server to interpret and process this data correctly. For example, when submitting an HTML form to a web server, the Content-Type is usually application/x-www-form-urlencoded. When uploading files to the server, the Content-Type is usually multipart/form-data.
How to post the message body with Curl?
You can pass the body of the POST message to Curl with the -d (or --data command-line) option. Curl will send data to the server in the same format as the browser when submitting an HTML form. To send binary data in the body of a POST message with Curl, use the --data-binary command-line option. To send a file from the disk using Curl, start the data with the @ symbol; the rest of the parameter should be the file's name from which data will be read.
How to pass the Content-Type header using Curl?
When sending data, you must also pass the Content-Type header, which identifies the data type in the HTTP message's body. This is important for the correct interpretation and processing of the message by servers and clients. The Content-Type header can be passed to Curl using the -H command-line option.
Curl POST Body Examples
The following are examples of sending a Curl POST body:
Sending JSON in the body of a POST message
The following is an example of sending JSON in the body of a POST message:
Sending HTML form in the body of a POST message
The following is an example of submitting an HTML form in the body of a POST message:
Sending XML in the body of a POST message
The following is an example of sending XML in the body of a POST message:
Sending File in the body of a POST message
The following is an example of sending a file in the body of a POST message: