POST XML file using cURL command line

If that question is connected to your other Hudson questions use the command they provide. This way with XML from the command line:

$ curl -X POST -d '<run>...</run>' \
http://user:pass@myhost:myport/path/of/url

You need to change it a little bit to read from a file:

 $ curl -X POST -d @myfilename http://user:pass@myhost:myport/path/of/url

Read the manpage. following an abstract for -d Parameter.

-d/–data

(HTTP) Sends the specified data in a
POST request to the HTTP server, in
the same way that a browser does when
a user has filled in an HTML form and
presses the submit button. This will
cause curl to pass the data to the
server using the content-type
application/x-www-form-urlencoded.
Compare to -F/–form.

-d/–data is the same as –data-ascii. To post data purely binary, you should
instead use the –data-binary option.
To URL-encode the value of a form
field you may use –data-urlencode.

If any of these options is used more
than once on the same command line,
the data pieces specified will be
merged together with a separating
&-symbol. Thus, using ‘-d name=daniel
-d skill=lousy’ would generate a post chunk that looks like
‘name=daniel&skill=lousy’.

If you start the data with the letter
@, the rest should be a file name to
read the data from, or – if you want
curl to read the data from stdin. The
contents of the file must already be
URL-encoded. Multiple files can also
be specified. Posting data from a file
named ‘foobar’ would thus be done with
–data @foobar.

Leave a Comment