Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
CURLOPT_POST(3)		   curl_easy_setopt options	       CURLOPT_POST(3)

NAME
       CURLOPT_POST - request an HTTP POST

SYNOPSIS
       #include	<curl/curl.h>

       CURLcode	curl_easy_setopt(CURL *handle, CURLOPT_POST, long post);

DESCRIPTION
       A parameter set to 1 tells libcurl to do	a regular HTTP post. This will
       also make the library use a  "Content-Type:  application/x-www-form-ur-
       lencoded" header. (This is by far the most commonly used	POST method).

       Use  one	 of CURLOPT_POSTFIELDS(3) or CURLOPT_COPYPOSTFIELDS(3) options
       to specify what data  to	 post  and  CURLOPT_POSTFIELDSIZE(3)  or  CUR-
       LOPT_POSTFIELDSIZE_LARGE(3) to set the data size.

       Optionally,  you	 can  provide data to POST using the CURLOPT_READFUNC-
       TION(3) and CURLOPT_READDATA(3) options but then	you must make sure  to
       not set CURLOPT_POSTFIELDS(3) to	anything but NULL. When	providing data
       with a callback,	you must transmit it using  chunked  transfer-encoding
       or  you must set	the size of the	data with the CURLOPT_POSTFIELDSIZE(3)
       or CURLOPT_POSTFIELDSIZE_LARGE(3) options. To enable chunked  encoding,
       you  simply  pass  in the appropriate Transfer-Encoding header, see the
       post-callback.c example.

       You can override	the default POST Content-Type: header by setting  your
       own with	CURLOPT_HTTPHEADER(3).

       Using  POST  with  HTTP 1.1 implies the use of a	"Expect: 100-continue"
       header.	You can	disable	 this  header  with  CURLOPT_HTTPHEADER(3)  as
       usual.

       If  you use POST	to an HTTP 1.1 server, you can send data without know-
       ing the size before starting the	POST if	you use	chunked	encoding.  You
       enable  this  by	adding a header	like "Transfer-Encoding: chunked" with
       CURLOPT_HTTPHEADER(3). With HTTP	1.0 or without chunked	transfer,  you
       must specify the	size in	the request. (Since 7.66.0, libcurl will auto-
       matically use chunked encoding for POSTs	if the size is unknown.)

       When setting CURLOPT_POST(3) to 1, libcurl will automatically set  CUR-
       LOPT_NOBODY(3) and CURLOPT_HTTPGET(3) to	0.

       If  you	issue a	POST request and then want to make a HEAD or GET using
       the same	re-used	handle,	you must explicitly set	the new	 request  type
       using CURLOPT_NOBODY(3) or CURLOPT_HTTPGET(3) or	similar.

DEFAULT
       0, disabled

PROTOCOLS
       HTTP

EXAMPLE
       CURL *curl = curl_easy_init();
       if(curl)	{
	 curl_easy_setopt(curl,	CURLOPT_URL, "http://example.com/foo.bin");
	 curl_easy_setopt(curl,	CURLOPT_POST, 1L);

	 /* set	up the read callback with CURLOPT_READFUNCTION */

	 ret = curl_easy_perform(curl);

	 curl_easy_cleanup(curl);
       }

AVAILABILITY
       Along with HTTP

RETURN VALUE
       Returns CURLE_OK	if HTTP	is supported, and CURLE_UNKNOWN_OPTION if not.

SEE ALSO
       CURLOPT_POSTFIELDS(3), CURLOPT_HTTPPOST(3),

libcurl	7.72.0			 July 22, 2019		       CURLOPT_POST(3)

NAME | SYNOPSIS | DESCRIPTION | DEFAULT | PROTOCOLS | EXAMPLE | AVAILABILITY | RETURN VALUE | SEE ALSO

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=CURLOPT_POST&sektion=3&manpath=FreeBSD+12.1-RELEASE+and+Ports>

home | help