rexx-things/samples/oorexx/httppost.rexx
2025-03-12 20:50:48 +00:00

81 lines
2.1 KiB
Rexx

/*
* Rexx/CURL sample program to execute a HTTP POST to a web server.
* This example, subscribes the user to the rexxcurl-users mailing
* list at SourceForge.
* Pass the email address and password on the command line.
*/
Call RxFuncAdd 'CurlLoadFuncs', 'rexxcurl', 'CurlLoadFuncs'
Call CurlLoadFuncs
Parse Arg email password
If password = '' Then
Do
Say 'No password supplied'
Exit 1
End
If Countstr( '@', email ) \= 1 Then
Do
Say 'The supplied email address is invalid'
Exit 1
End
site = 'http://lists.sourceforge.net/lists/subscribe/rexxcurl-users'
curl = CurlInit()
If curl \= '' Then
Do
Say 'We are running' CurlVariable('VERSION')
Call CurlSetopt curl, 'HTTPPOST', 1
field.1 = 'email='email
field.2 = 'pw='password
field.3 = 'pw-conf='password
field.4 = 'digest=0'
field.5 = 'email-button=Subscribe'
field.0 = 5
Call CurlSetopt curl, 'HTTPPOSTFIELDS', 'field.', '&'
Call CurlSetopt curl, 'OUTSTEM', 'response.', '0A'x
Call CurlSetopt curl, 'URL', site
If curlerror.intcode \= 0 Then Call Abort 'Error setting URL option'
Call CurlPerform curl
If curlerror.intcode \= 0 Then Call Abort 'Error POSTing to' site
/*
* Check that the submission worked
*/
ok = 0
Do i = 1 To response.0
If Countstr( 'Instructions are being sent', response.i ) \= 0 Then
Do
ok = 1
Leave
End
End
If ok Then Say 'Subscription worked OK for' email
Else
Do
Say 'Subscription failed for' email '- results follow...'
Do i = 1 To response.0
Say response.i
End
End
/*
* Cleanup the connection
*/
Call CurlCLeanup curl
End
Call CurlDropFuncs 'UNLOAD'
Return 0
Abort: Procedure Expose curlerror.
Parse Arg msg
Say msg
If curlerror.curlcode \= 0 Then Say 'cURL error:' curlerror.curlcode '-' curlerror.curlerrm
Else Say 'RexxCURL error:' curlerror.intcode '-' curlerror.interrm
Call CurlCLeanup curl
Call CurlDropFuncs 'UNLOAD'
Exit 1