| .\" ************************************************************************** |
| .\" * _ _ ____ _ |
| .\" * Project ___| | | | _ \| | |
| .\" * / __| | | | |_) | | |
| .\" * | (__| |_| | _ <| |___ |
| .\" * \___|\___/|_| \_\_____| |
| .\" * |
| .\" * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al. |
| .\" * |
| .\" * This software is licensed as described in the file COPYING, which |
| .\" * you should have received as part of this distribution. The terms |
| .\" * are also available at https://curl.se/docs/copyright.html. |
| .\" * |
| .\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell |
| .\" * copies of the Software, and permit persons to whom the Software is |
| .\" * furnished to do so, under the terms of the COPYING file. |
| .\" * |
| .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY |
| .\" * KIND, either express or implied. |
| .\" * |
| .\" ************************************************************************** |
| .\" |
| .TH CURLOPT_POSTFIELDS 3 "April 23, 2021" "libcurl 7.78.0" "curl_easy_setopt options" |
| |
| .SH NAME |
| CURLOPT_POSTFIELDS \- specify data to POST to server |
| .SH SYNOPSIS |
| #include <curl/curl.h> |
| |
| CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POSTFIELDS, char *postdata); |
| .SH DESCRIPTION |
| Pass a char * as parameter, pointing to the full data to send in an HTTP POST |
| operation. You must make sure that the data is formatted the way you want the |
| server to receive it. libcurl will not convert or encode it for you in any |
| way. For example, the web server may assume that this data is url-encoded. |
| |
| The data pointed to is NOT copied by the library: as a consequence, it must be |
| preserved by the calling application until the associated transfer finishes. |
| This behavior can be changed (so libcurl does copy the data) by setting the |
| \fICURLOPT_COPYPOSTFIELDS(3)\fP option. |
| |
| This POST is a normal application/x-www-form-urlencoded kind (and libcurl will |
| set that Content-Type by default when this option is used), which is commonly |
| used by HTML forms. Change Content-Type with \fICURLOPT_HTTPHEADER(3)\fP. |
| |
| You can use \fIcurl_easy_escape(3)\fP to url-encode your data, if necessary. It |
| returns a pointer to an encoded string that can be passed as \fIpostdata\fP. |
| |
| Using \fICURLOPT_POSTFIELDS(3)\fP implies setting \fICURLOPT_POST(3)\fP to 1. |
| |
| If \fICURLOPT_POSTFIELDS(3)\fP is explicitly set to NULL then libcurl will get |
| the POST data from the read callback. If you want to send a zero-byte POST set |
| \fICURLOPT_POSTFIELDS(3)\fP to an empty string, or set \fICURLOPT_POST(3)\fP to |
| 1 and \fICURLOPT_POSTFIELDSIZE(3)\fP to 0. |
| |
| libcurl will use assume this option points to a nul-terminated string unless |
| you also set \fICURLOPT_POSTFIELDSIZE(3)\fP to specify the length of the |
| provided data, which then is strictly required if you want to send off nul |
| bytes included in the data. |
| |
| Using POST with HTTP 1.1 implies the use of a "Expect: 100-continue" header, |
| and libcurl will add that header automatically if the POST is either known to |
| be larger than 1MB or if the expected size is unknown. You can disable this |
| header with \fICURLOPT_HTTPHEADER(3)\fP as usual. |
| |
| To make multipart/formdata posts (aka RFC2388-posts), check out the |
| \fICURLOPT_HTTPPOST(3)\fP option combined with \fIcurl_formadd(3)\fP. |
| .SH DEFAULT |
| NULL |
| .SH PROTOCOLS |
| HTTP |
| .SH EXAMPLE |
| .nf |
| CURL *curl = curl_easy_init(); |
| if(curl) { |
| const char *data = "data to send"; |
| |
| curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); |
| |
| /* size of the POST data */ |
| curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, 12L); |
| |
| /* pass in a pointer to the data - libcurl will not copy */ |
| curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data); |
| |
| curl_easy_perform(curl); |
| } |
| .fi |
| .SH AVAILABILITY |
| Always |
| .SH RETURN VALUE |
| Returns CURLE_OK |
| .SH "SEE ALSO" |
| .BR CURLOPT_POSTFIELDSIZE "(3), " CURLOPT_READFUNCTION "(3), " |