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 |
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¤cy=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
- CURL.GetOptionPostFields
- CURL.SetOptionCookieList
- CURL.SetOptionPostQuote
- CURL.SetOptionProtocols
- CURL.SetOptionSSLCert
- CURL.SetOptionSSLKey
- CURL.SetOptionSSLVerifyHost
- CURL.SetOptionSSLVerifyPeer
- CURL.SetOptionUpload
- CURL.SetOptionURL
Release notes
- Version 10.4
- Fixed an issue with CURL.SetOptionPostFields to accept > 8 MB in size of post data.
Example Databases
- CURL/Amazon S3/Amazon S3 Upload File
- CURL/CURL and OnWindowTransaction
- CURL/CURL Custom Function
- CURL/Email/Office 365 oAuth SMTP
- CURL/WebServices/CURL FMS Admin API v17
- CURL/WebServices/CURL FMS Admin API v18
- CURL/WebServices/Magento2 REST API
- CURL/WebServices/Sales Force Test
- CURL/WebServices/Swiss Post Addresscheck
- WebHook/WebHook Chat/WebHook Chat
Blog Entries
- Adding ChatGPT to the ScriptWorkspace context menu
- MQTT in FileMaker
- Background Log Custom function
- Send Audit Log via CURL in background
- How long do you wait for Insert From URL to finish?
- CURL Custom Function
- Trigger Scripts via WebHook
- SMTP with OAuth for Office 365 in FileMaker
- Translating Insert from URL options for CURL to MBS Plugin calls
- Using Apple's Global Service Exchange web service in FileMaker
FileMaker Magazin
Created 18th August 2014, last changed 25th June 2024