All about Web_reg_save_param

Example: web_reg_save_param

The following examples are presented for web_reg_save_param.

Example 1: Saving simple text strings

Back to top

In this example, web_reg_save_param is used to save a value from the response to a web_submit_form call. The value saved is used in a subsequent web_submit_form call.

In the Mercury Tours sample program, the server response to the web_submit_form call below contains the following radio button options:

FlightDeparture timeCost

outboundFlight value=230;378;11/20/2003 checked >Blue Sky Air 2308am$ 378

outboundFlight value=231;337;11/20/2003>Blue Sky Air 2311pm$ 337

and so on.

To submit a reservation, the outboundFlight value is required. web_reg_save_param is used to save the outboundFlight value.

Back to top

Case of saving a single string

Back to top

To reserve the default flight, save the "checked" value, and pass it to web_submit_form. The html segment for the default value is:

name=outboundFlight value=230;378;11/20/2003 checked >

/*This web_reg_save_param call applies to the following action function: web_submit_form. */

web_reg_save_param("outFlightVal",

"LB=outboundFlight value=", "RB= checked >", LAST);

web_submit_form("reservations.pl",

"Snapshot=t4.inf",

ITEMDATA,

"Name=depart", "Value=London", ENDITEM,

"Name=departDate", "Value=11/20/2003", ENDITEM, "Name=arrive", "Value=New York", ENDITEM, "Name=returnDate", "Value=11/21/2003", ENDITEM, "Name=numPassengers", "Value=1", ENDITEM, "Name=roundtrip", "Value=", ENDITEM,

"Name=seatPref", "Value=None", ENDITEM,

"Name=seatType", "Value=Coach", ENDITEM,

"Name=findFlights.x", "Value=83", ENDITEM,

"Name=findFlights.y", "Value=16", ENDITEM,

LAST);

/*

The result of the web_reg_save_param having been called before the web_submit_form is:

Action.c(15): Notify: Saving Parameter "outFlightVal = 230;378;11/20/2003"

*/

// Now use the saved outFlightVal

web_submit_form("reservations.pl_2",

"Snapshot=t5.inf",

ITEMDATA,

"Name=outboundFlight", "Value={outFlightVal}", ENDITEM,

"Name=reserveFlights.x", "Value=92", ENDITEM,

"Name=reserveFlights.y", "Value=10", ENDITEM,

LAST);

/*

Action.c(34): Notify: Parameter Substitution: parameter "outFlightVal" = "230;378;11/20/2003" */

Back to top

Case requiring handling arrays

Back to top

If you want to test the last option returned by the web_submit_form call, save all the matches and then handle the array.

This example shows the use of web_reg_save_param with "ORD=ALL" to get an array of parameters. The last item in the array is then used to correlate a web_submit_form call.

char outFlightParam[50]; // The name of the parameter for correlation

char outFlightParamVal[50]; // The formatted value of outFlightParam

/*

This web_reg_save_param call applies to the following action function, web_submit_form. Because of the "ORD=ALL" argument, it saves all the values that have the given left and right boundaries to an array of parameters.

The SaveLen argument is used to restrict the length to 18 characters because the default value is "230;378;11/20/2003 checked >". We restrict the length so as not to capture the " checked ".

*/

web_reg_save_param("outFlightVal",

"LB=outboundFlight value=", "RB=>",

"ORD=ALL",

"SaveLen=18",

LAST);

web_submit_form("reservations.pl",

"Snapshot=t4.inf",

ITEMDATA,

"Name=depart", "Value=London", ENDITEM,

"Name=departDate", "Value=11/20/2003", ENDITEM,

"Name=arrive", "Value=New York", ENDITEM,

"Name=returnDate", "Value=11/21/2003", ENDITEM,

"Name=numPassengers", "Value=1", ENDITEM,

"Name=roundtrip", "Value=", ENDITEM,

"Name=seatPref", "Value=None", ENDITEM,

"Name=seatType", "Value=Coach", ENDITEM,

"Name=findFlights.x", "Value=83", ENDITEM,

"Name=findFlights.y", "Value=16", ENDITEM,

LAST);

/*

The result of the web_reg_save_param having been called before the web_submit_form is:

Notify: Saving Parameter "outFlightVal_1 = 230;378;11/20/2003"

Notify: Saving Parameter "outFlightVal_2 = 231;337;11/20/2003"

Notify: Saving Parameter "outFlightVal_3 = 232;357;11/20/2003"

Notify: Saving Parameter "outFlightVal_4 = 233;309;11/20/2003"

Notify: Saving Parameter "outFlightVal_count = 4"

The next problem is to get the highest array element, identified with the parameter outFlightVal_count. This parameter is automatically created by the script recorder. You do not have to enter anything in the script.

*/

/* Get the name of the parameter, in this case "outFlightVal_4".

Put it in brackets so it can be an input to an lr_eval_string call.

Note that the brackets in the second argument to sprintf are not indicating a script parameter to sprintf. They are string literals that will be part of outFlightParam after the call.

In the second call to sprintf, those brackets indicate a parameter to lr_eval_string.

*/

sprintf(outFlightParam, "{outFlightVal_%s}",

lr_eval_string("{outFlightVal_count}"));

/* outFlightParam is now "{outFlightVal_4}" */

/* Now get the "Value" argument for web_submit_form, in the

format "Value=xxxx")

*/

sprintf(outFlightParamVal, "Value=%s",

lr_eval_string(outFlightParam));

lr_message("The value argument is : %s", outFlightParamVal);

// The value argument is : Value=233;309;11/20/2003

/* Now the string outFlightParamVal can be passed

to web_submit_form */

web_submit_form("reservations.pl_2",

"Snapshot=t5.inf",

ITEMDATA,

"Name=outboundFlight",outFlightParamVal, ENDITEM,

"Name=reserveFlights.x", "Value=92", ENDITEM,

"Name=reserveFlights.y", "Value=10", ENDITEM,

LAST);

Back to top

Example 2: Saving a text by using binary boundaries

Back to top

The following example uses BIN type boundaries. The left boundary is composed of 3F and DD. The right boundary is composed of CC and b.

web_reg_save_param("p", "LB/BIN=\\x3F\\xDD", "RB/BIN=\\xCCb", LAST);

Example 3: Saving a text specified with an offset and length

Back to top

The following example specifies an offset and length. The boundaries for the HTML string "Astra on TESTSERVER", are "Astra " (note the space which follows the word) and "TestServer". This should return "on" but since the offset is 1 (i.e. start at the second character) and the length of data to save is 1, then the string saved to TestParam is "n".

web_reg_save_param("Param1", "LB=Astra ", "RB= TESTSERVER",

"SaveOffset=1", "SaveLen=1", LAST);

Example 4: Boundaries containing special characters

The following example shows the use of escaping in the C language when the boundaries contain special characters.

The following HTML segment contains new line characters (paragraph markers) after each "" and quote marks around each class name. We want to save "Georgiana Darcy" to parameter "UserName". The segment containing the new line and quotes has to be included in the left boundary because "Name:", which precedes the segment, is required for the occurrence to be unique. The ORD attribute cannot be used in this case because the length of the list preceding the relevant element varies.

UserID:

Revere18041775

Name:

Georgiana Darcy

Company:

Pride and Prejudice

The function is:

web_reg_save_param("UserName",

"LB=Name: \n \"surveyAnswerReview\">",

"RB=

",

LAST);

Note the \n for the new line character, and that the quote characters need to be escaped: \".

Comments

Popular Posts