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.