web_reg_save_param函数英文实例

Example: web_reg_save_param

Example 1

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

<tr bgcolor=#66cccc><th>Flight<th>Departure time<th>Cost

<tr bgcolor=#66CCff><td align=center><input type = radio name=outboundFlight value=230;378;11/20/2003 checked >Blue Sky Air 230<td align=center>8am<td align=center>$ 378

<tr bgcolor=#eeeeee><td align=center><input type = radio name=outboundFlight value=231;337;11/20/2003>Blue Sky Air 231<td align=center>1pm<td align=center>$ 337

and so on.

To submit a reservation, the outboundFlight value is required.

Simple case

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=<OFF>", 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" */

Case requiring handling arrays

If you want to test the last option, 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=<OFF>", 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);

Example 2

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

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

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 "<strong>" 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.

<span class="surveyQuestionReview"><strong> UserID:</strong></span><strong>

    </strong> <span class="surveyAnswerReview">Revere18041775</span> <br>

<span class="surveyQuestionReview"><strong> Name:</strong></span><strong>

    </strong> <span class="surveyAnswerReview">Georgiana Darcy</span> <br>

<span class="surveyQuestionReview"><strong> Company:</strong></span><strong>

    </strong> <span class="surveyAnswerReview">Pride and Prejudice</span> <br>

The function is:

web_reg_save_param("UserName",

"LB=Name:</strong></span><strong> \n    </strong> <span class=\"surveyAnswerReview\">",

              "RB=</span> <br>",

              LAST);

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

posted on 2006-05-16 15:25  测试者家园  阅读(2689)  评论(0编辑  收藏  举报

导航