Simulate submitting data from a web browser
From DataFlex Wiki
Jump to navigationJump to search
httpPostRequest
by Nick Wright
I just spent a while trying to figure the chttpRequest class out and the help has no real world examples so i am posting so as to save somebody the time I wasted. Lets say you need to post to a location e.g. http://www.test.com/testlogin.php and you are trying to simulate filling in forms and posting as in the following html:
<form action=/testlogin.php method=post> Name: <input type=text name=uid /><br /> Pass: <input type=password name=pass /><br /> <input type=submit name=submit> </form>
then this example view works:
Use cHttpTransfer.pkg
Use cTextEdit.pkg
Deferred_View Activate_ovwtestLogin for ;
Object ovwtestLogin is a dbView
Set Border_Style to Border_Thick
Set Size to 200 350
Set Location to 2 2
Set Maximize_Icon to True
Set Verify_Data_Loss_Msg to 0
Set Verify_Exit_Msg to 0
Object oForm1 is a Form
Set Size to 13 100
Set Location to 15 124
Set Label to "username"
End_Object
Object oForm2 is a Form
Set Size to 13 100
Set Location to 31 124
Set Label to "password"
End_Object
Object oHttpTransfer1 is a cHttpTransfer
Set psRemoteHost to "www.test.com"
Property String psAllData
Procedure OnDataReceived String sContentType String sData
String sAll
Get psAllData to sAll
Set psAllData to (sAll + sData)
End_Procedure
End_Object
Object oButton1 is a Button
Set Location to 58 130
Set Label to 'Test'
// fires when the button is clicked
Procedure OnClick
Send Check_Pass
End_Procedure
End_Object
Object oTextEdit1 is a cTextEdit
Set Size to 116 278
Set Location to 80 47
Procedure ShowResult
Address aMyAddress
String sText
Get psAllData of oHttpTransfer1 to sText
GetAddress of sText to aMyAddress
Set paValue to aMyAddress
End_Procedure // GetControlContents
End_Object
Procedure Check_Pass
String sPost sUser sPass
Integer iOK iErr
Set psAllData of oHttpTransfer1 to ''
Get Value of oForm1 to sUser
Get Value of oForm2 to sPass
Move ('uid=' + trim(sUser) + '&pass=' + trim(sPass)) to sPost
Get AddHeader of oHttpTransfer1 "CONTENT-TYPE" "application/x-www-form-urlencoded" to iErr
Get HttpPostRequest of oHttpTransfer1 "/testlogin.php" sPost False to iErr
Send ShowResult of oTextEdit1
End_Procedure
Cd_End_Object
Note the help documentation in older VDF versions appears to be wrong: parameter sData==== Memory address of the data to be posted the string will do, does not need to be memory address!