MoneyWorks Manual
Curl_SetOpt (curlhandle, option, value)
Definition: Sets options on the handle. See the official curl documentation for more information on the options. Options that take a stringlist should be given an indexed array parameter (with numeric indexes atarting at 0). Options that take a callback should be given the name of the callback handler as a string. All other options take a number or string parameter.
Currently supported options are: CURLOPT_WRITEDATA
, CURLOPT_URL
, CURLOPT_PORT
, CURLOPT_PROXY
, CURLOPT_USERPWD
, CURLOPT_PROXYUSERPWD
, CURLOPT_RANGE
, CURLOPT_READDATA
, CURLOPT_ERRORBUFFER
, CURLOPT_WRITEFUNCTION
, CURLOPT_READFUNCTION
, CURLOPT_TIMEOUT
, CURLOPT_INFILESIZE
, CURLOPT_POSTFIELDS
, CURLOPT_REFERER
, CURLOPT_FTPPORT
, CURLOPT_USERAGENT
, CURLOPT_LOW_SPEED_LIMIT
, CURLOPT_LOW_SPEED_TIME
, CURLOPT_RESUME_FROM
, CURLOPT_COOKIE
, CURLOPT_HTTPHEADER
, CURLOPT_HTTPPOST
, CURLOPT_SSLCERT
, CURLOPT_KEYPASSWD
, CURLOPT_CRLF
, CURLOPT_QUOTE
, CURLOPT_HEADERDATA
, CURLOPT_COOKIEFILE
, CURLOPT_SSLVERSION
, CURLOPT_TIMECONDITION
, CURLOPT_TIMEVALUE
, CURLOPT_CUSTOMREQUEST
, CURLOPT_STDERR
, CURLOPT_POSTQUOTE
, CURLOPT_VERBOSE
, CURLOPT_HEADER
, CURLOPT_NOPROGRESS
, CURLOPT_NOBODY
, CURLOPT_FAILONERROR
, CURLOPT_UPLOAD
, CURLOPT_POST
, CURLOPT_DIRLISTONLY
, CURLOPT_APPEND
, CURLOPT_NETRC
, CURLOPT_FOLLOWLOCATION
, CURLOPT_TRANSFERTEXT
, CURLOPT_PUT
, CURLOPT_AUTOREFERER
, CURLOPT_PROXYPORT
, CURLOPT_POSTFIELDSIZE
, CURLOPT_HTTPPROXYTUNNEL
, CURLOPT_INTERFACE
, CURLOPT_KRBLEVEL
, CURLOPT_SSL_VERIFYPEER
, CURLOPT_CAINFO
, CURLOPT_MAXREDIRS
, CURLOPT_FILETIME
, CURLOPT_TELNETOPTIONS
, CURLOPT_MAXCONNECTS
, CURLOPT_FRESH_CONNECT
, CURLOPT_FORBID_REUSE
, CURLOPT_RANDOM_FILE
, CURLOPT_EGDSOCKET
, CURLOPT_CONNECTTIMEOUT
, CURLOPT_HEADERFUNCTION
, CURLOPT_HTTPGET
, CURLOPT_SSL_VERIFYHOST
, CURLOPT_COOKIEJAR
, CURLOPT_SSL_CIPHER_LIST
, CURLOPT_HTTP_VERSION
, CURLOPT_FTP_USE_EPSV
, CURLOPT_SSLCERTTYPE
, CURLOPT_SSLKEY
, CURLOPT_SSLKEYTYPE
, CURLOPT_SSLENGINE
, CURLOPT_SSLENGINE_DEFAULT
, CURLOPT_DNS_USE_GLOBAL_CACHE
, CURLOPT_DNS_CACHE_TIMEOUT
, CURLOPT_PREQUOTE
, CURLOPT_COOKIESESSION
, CURLOPT_CAPATH
, CURLOPT_BUFFERSIZE
, CURLOPT_NOSIGNAL
, CURLOPT_SHARE
, CURLOPT_PROXYTYPE
, CURLOPT_ACCEPT_ENCODING
, CURLOPT_HTTP200ALIASES
, CURLOPT_UNRESTRICTED_AUTH
, CURLOPT_HTTPAUTH
, CURLOPT_FTP_CREATE_MISSING_DIRS
, CURLOPT_PROXYAUTH
, CURLOPT_FTP_RESPONSE_TIMEOUT
, CURLOPT_SERVER_RESPONSE_TIMEOUT
, CURLOPT_IPRESOLVE
, CURLOPT_MAXFILESIZE
, CURLOPT_NETRC_FILE
, CURLOPT_TCP_NODELAY
, CURLOPT_FTPSSLAUTH
, CURLOPT_FTP_ACCOUNT
, CURLOPT_COPYPOSTFIELDS
.
As of v8.1.7, CURLOPT_MAIL_FROM
, CURLOPT_MAIL_RCPT
, CURLOPT_MAIL_AUTH
, CURLOPT_USERNAME
, and CURLOPT_PASSWORD
, CURLOPT_TIMEOUT_MS
, CURLOPT_CONNECTTIMEOUT_MS
, CURLOPT_USE_SSL
, CURLOPT_SSL_OPTIONS
are also supported.
Examples:
let fd = file_open("picture.jpg") let ch = curl_init(); curl_setopt(ch, CURLOPT_URL, "https://myserver:6710/REST/Acme.moneyworks/image/product=BA100") // datacentre with folder login requires dual-domain Auth headers let headers = CreateArray() let headers[0] = "Authorization: Basic " + base64encode("root:Datacentre:myrootpassword") let headers[1] = "Authorization: Basic " + base64encode("Admin:Document:docpass") let headers[2] = "Content-Type: image/jpeg" curl_setopt(ch, CURLOPT_HTTPHEADER, headers) curl_setopt(ch, CURLOPT_PUT, 1) curl_setopt(ch, CURLOPT_READDATA, fd) // simplest: let default callback read the file let result = curl_exec(ch) file_close(fd) curl_close(ch)
Note on callbacks: To use a callback function (with CURLOPT_READFUNCTION
or CURLOPT_HEADERFUNCTION
or CURLOPT_WRITEFUNCTION
) for reading or writing data, you supply a string containing the name of the callback handler in your script. A header or write callback receives a string parameter containing some amount of data that curl has read from the server. You can return FALSE to cancel the operation. A read callback receives the number of bytes to produce as the first parameter and the second parameter is the file handle you provide to the CURLOPT_READDATA
option.
Example callback functions:
on MyHeaderCallback(aHeader) let headers = headers + Replace(aHeader, "\r", "") // convert \r\n to \n // optionally return false to abort end on MyWriteCallback(someData) let retval = retval + someData // optionally return false to abort end on MyReadCallback(maxBytesToProvide, readDataFrom) // file_read automatically restricts count to not go beyond end of file // when at end of file, will return empty string, which return // value signals end of data to curl let s = file_read(readDataFrom, maxBytesToProvide) return s end
Installing a read callback function: Ths will generate data to PUT to the server
curl_setopt(ch, CURLOPT_PUT, 1) curl_setopt(ch, CURLOPT_READDATA, fd) // will be passed to our callback curl_setopt(ch, CURLOPT_READFUNCTION, "MyReadCallback") // our callback reads file
Availability: available within MWScript handlers.
See Also:
Base64Decode: String from a base64 encoding
Base64Encode: Base64 of a string
Curl_Close: Finish with a CURL session
Curl_Exec: Execute a CURL session
Curl_GetInfo: Get information about a CURL transfer
Curl_Init: Start a CURL session
Curl_StrError: Get an error message from a CURL object
File_Open: Open a file
URLEncode: Convert url unsafe characters in a string to "%xx”