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!