cURL: multiple POST requests while reusing the TCP connection

If multiple URLs are passed to cURL, it reuses the TCP connection when possible.

For example:

curl -o 1.jpg http://example.com/1.jpg -o 2.jpg http://example.com/2.jpg

I need to do the same, but with different post queries to the same URL.

I thought maybe this would work:

curl -d "a=1" -o 1 http://example.com/script.php -d "a=2" -o 2 http://example.com/script.php

But instead of separating the -d arguments per request, it just adds them together.

Is there any way to achieve what I want with cURL?

If not, is there another tool which is likely to be present on a Linux system (e.g. Wget) which can do the above?


Since curl 7.36.0, the --next or -: command-line option allows delimiting URLs and their associated options. From the curl man page:

For example, you can do both a GET and a POST in a single command line:

curl www1.example.com --next -d postthis www2.example.com

Your desired request could be:

curl -d "a=1" -o 1 http://example.com/script.php --next -d "a=2" -o 2 http://example.com/script.php

The answer of Daniel Stenberg, the author of cURL:

We've previously discussed adding that ability but so far we haven't.