Components All New MacOS Windows Linux iOS
Examples Mac & Win Server Client Guides Statistic FMM Blog Deprecated Old

CURL.SetOptionPostFields

Sets the post fields.

Component Version macOS Windows Linux Server iOS SDK
CURL 2.5 ✅ Yes ✅ Yes ✅ Yes ✅ Yes ✅ Yes
MBS( "CURL.SetOptionPostFields"; curl; Value { ; Encoding } )   More

Parameters

Parameter Description Example Flags
curl The CURL session handle. $curl
Value The post data. ""
Encoding The text encoding for text parameter.
Default is UTF-8.
Possible encoding names: ANSI, ISO-8859-1, Latin1, Mac, Native, UTF-8, DOS, Hex, Base64 or Windows. More listed in the FAQ.
"UTF8" Optional

Result

Returns "OK" on success.

Description

Sets the post fields.
Pass a text, which should be the full data to post in an HTTP POST operation.
The plugin sets the size for you. There is usually not need to call CURL.SetOptionPostFieldSize function to overwrite it.

If you plan to pass a form, maybe check functions like CURL.FormAddKeyValue instead of building post fields yourself.

You can use CURL.SetOptionHTTPHeader to set the content type and other headers.

Using this function is not recommended for more than a few hundred MB of text. If you need more, better stream the data with CURL.OpenInputFile from a file.

If you like to make a PATCH or PUT, you can use either CURL.SetOptionPostFields + CURL.SetOptionCustomRequest or the combination of CURL.SetOptionUpload + CURL.SetInputText. It seems to be bad to use CURL.SetOptionPostFields and CURL.SetOptionUpload since CURL tries to upload, but hasn't got data.

See also COPYPOSTFIELDS option in CURL manual.

Examples

Run a generic POST request for REST or SOAP web service:

# new session
Set Variable [$curl; Value:MBS("CURL.New")]
# use stripe charge API
Set Variable [$result; Value:MBS("CURL.SetOptionURL"; $curl; "https://someURL/service")]
# set user name and password if needed:
Set Variable [$result; Value:MBS("CURL.SetOptionUserName"; $curl; "user name")]
Set Variable [$result; Value:MBS("CURL.SetOptionPassword"; $curl; "password")]
# set some additional headers, which may include custom authorization and content types:
Set Variable [$result; Value:MBS( "CURL.SetOptionHTTPHeader"; $curl; "Authorization: Bearer a92eabb9-76f9-42ee-b280-bcd15cb2e9db"; "Content-Type: application/json" )
# make a post with given content:
Set Variable [$result; Value:MBS("CURL.SetOptionPostFields"; $curl; $json]
# perform
Set Field [CURL Test::Result; MBS("CURL.Perform"; $curl)]
# now check result
Set Field [CURL Test::Text; MBS("CURL.GetResultAsText"; $curl; "UTF8")]
Set Field [CURL Test::header; MBS("CURL.GetDebugMessages"; $curl)]
# cleanup
Set Variable [$result; Value:MBS("CURL.Release"; $curl)]

Set post field with some XML for SOAP WebService:

MBS("CURL.SetOptionPostFields"; $curl; "<xml>....</xml>"; "UTF-8")

Set post fields:

MBS("CURL.SetOptionPostFields"; $curl; "first=John&last=Smith"; "UTF-8")

Build form:

MBS( "CURL.FormAddKeyValue"; $curl; "login"; "testuser" )
MBS( "CURL.FormAddKeyValue"; $curl; "password"; "xxx" )
MBS( "CURL.FormFinish"; $curl )

Charge with Stripe webservice:

# new session
Set Variable [$curl; Value:MBS("CURL.New")]
# use stripe charge API
Set Variable [$result; Value:MBS("CURL.SetOptionURL"; $curl; "https://api.stripe.com/v1/charges")]
# set user name
Set Variable [$result; Value:MBS("CURL.SetOptionUserName"; $curl; "sk_test_ your id here")]
# make a post with given content:
Set Variable [$result; Value:MBS("CURL.SetOptionPost"; $curl; 1)]
Set Variable [$result; Value:MBS("CURL.SetOptionPostFields"; $curl; "amount=400&currency=usd&description=Charge%20for%20test@example.com&source[object]=card&source[number]=4242424242424242&source[exp_month]=12&source[exp_year]=2017&source[cvc]=123")]
# perform
Set Field [CURL Test::Result; MBS("CURL.Perform"; $curl)]
# now check result
Set Field [CURL Test::Text; MBS("CURL.GetResultAsText"; $curl; "UTF8")]
Set Field [CURL Test::header; MBS("CURL.GetDebugMessages"; $curl)]
# cleanup
Set Variable [$result; Value:MBS("CURL.Release"; $curl)]

OAuth2 Token authentication with passing credentials via POST:

Set Variable [ $Curl ; Value: MBS("CURL.New") ]
#
# Change path to your CACert PEM File.
Set Variable [ $CacertPath ; Value: "C:\Users\Public\cacert.pem" ]
// Set Variable [ $Result ; Value: MBS( "CURL.SetOptionCAInfo"; $curl; $cacertPath ) ]
// Set Variable [ $Result ; Value: MBS( "CURL.SetOptionSSLVerifyHost"; $curl; 2 ) ]
// Set Variable [ $Result ; Value: MBS( "CURL.SetOptionSSLVerifyPeer"; $curl; 1 ) ]
Set Variable [ $Result ; Value: MBS("CURL.SetOptionVerbose"; $curl; 1) ]
#
# credentials
Set Variable [ $secret ; Value: "xxx" ]
Set Variable [ $client ; Value: "yyy" ]
Set Variable [ $domain ; Value: "zzz" ]
Set Variable [ $Result ; Value: MBS("CURL.SetOptionURL"; $curl; "https://" & $domain & "/auth/realms/demo/protocol/openid-connect/token") ]
#
# POST with form encoding
Set Variable [ $result ; Value: MBS("CURL.SetOptionHTTPHeader"; $curl; "content-type: application/x-www-form-urlencoded") ]
Set Variable [ $Result ; Value: MBS("CURL.SetOptionPostFields"; $curl; "grant_type=client_credentials&client_id="& $client & "&client_secret=" & $secret) ]
#
# run it
Set Variable [ $Result ; Value: MBS("CURL.Perform"; $curl) ]
Set Variable [ $DebugText ; Value: MBS("CURL.GetDebugMessages"; $curl) ]
Set Variable [ $ResultText ; Value: MBS("CURL.GetResultAsText"; $curl) ]
If [ $result = "OK" ]
    # extract token
    Set Variable [ $Token ; Value: JSONGetElement ( $ResultText; "access_token" ) ]
    Set Field [ tbl_debugger::token ; $Token ]
End If
Set Field [ tbl_debugger::header ; $DebugText ]
Set Variable [ $Result ; Value: MBS("CURL.Release"; $curl) ]

Sets custom request PATCH:

Set Variable [ $r ; Value: MBS( "CURL.SetOptionCustomRequest"; $curl; "PATCH" ) ]
Set Variable [ $r ; Value: MBS( "CURL.SetOptionPostFields"; $curl; $json ) ]

Upload XML with ISO-8859-1 encoding:

Set Variable [ $r ; Value: MBS("CURL.SetOptionPostFields"; $curl; "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?><test>Hällo Wörld</test>"; "ISO-8859-1") ]
Set Variable [ $r ; Value: MBS("CURL.SetOptionHTTPHeader"; $curl; "Content-Type: text/xml") ]

Publish a topic for MQTT server in a Let statement:

Let([
// Send in file MQTT
curl = MBS("CURL.New");
// connect to MQTT server and send
r = MBS("CURL.SetOptionURL"; curl; MQTT::URL);
r = MBS("CURL.SetOptionPostFields"; curl; MQTT::Payload; "UTF-8");
//
r = MBS("CURL.SetOptionUserName"; curl; MQTT::Username);
r = MBS("CURL.SetOptionPassword"; curl; MQTT::Password);
//
// send request now
result = MBS("CURL.Perform"; curl);
//
// for checking error details
$$debugLog = MBS("CURL.GetDebugMessages"; curl; "UTF-8");
$$output = MBS("CURL.GetResultAsText"; curl; "UTF-8");
//
r = MBS("CURL.Release"; curl)]; result)

See also

Release notes

Example Databases

Blog Entries

Created 18th August 2014, last changed 25th June 2024


CURL.SetOptionPostFieldSize - CURL.SetOptionPostQuote