Make a POST Request with From Data Contained Within a File

curl -v --data @payload.txt -H "Content-Type: application/x-www-form-urlencoded" -X POST http://server:8080

where payload.txt contains key-value pairs.

Send a Compressed Request

curl can be used to send a compressed HTTP request - HTTP requests are not usually compressed, only the responses are, but the standard does not prohibit setting the Content-Encoding header to gzip, deflate or others and then sending a compressed body.

To send a compressed POST HTTP request, first create a file containing the body that shall be sent, say, request.txt and then compress the file using gzip:

gzip request.txt

For this example, the request.txt file contains POST key-value data such that the request content type will be set to application/x-www-url-form-urlencoded.

The command will create a compressed file request.txt.gz. Afterward, the curl command shall read:

curl -v --data-binary @request.txt.gz "Content-Type: application/x-www-form-urlencoded" -H "Content-Encoding: gzip" -X POST http://server.tld/

where: