Tuesday, 15 September 2015

LoadRunner - >>how to convert a plain text to URL format

LoadRunner ->> how to convert a plain text to URL format

The task - How to convert a plain text string to URL-format in LoadRunner?

Several days ago I faced with a simple task - it was needed to convert a passed parameter (which was in a plain text form) to URL-format. In other words, I had to convert:
string "ab" to the same string "ab"
string "a b" to the string "a%20b"
string "a b_c%" to "a%20b%5Fc%25"
and so on ...

The cause - Why it was needed?
LoadRunner script contained parameters, which should be passed to URL directly. Some my parameters contained special characters like spaces (" "), quotes ("), percentage ("%"), asterisks ("*") and others. To be processed correctly by a browser and a web server, these characters should be translated and passed as their hex-codes.
For example:
a space character (" ") has hex-code 0x20, so it should be passed as "%20"
underline character (" ") has hex-code 0x5F, so it should be passed as "%5F"
The ways on how to perform the task.
To perform this task I decided to use LoadRunner's web_convert_param function. I didn't know at that time that this function does not satisfy my requirements. So, I was reluctant to write my own function EncodePlainToURL. Well, let's see both solutions.
web_convert_param function.

As Help says, web_convert_param function converts HTML to a URL or plain text.
So, I wrote this code:
char sIn[] = "t es%d$ + eprst_"; That means that space (" ") was converted to a plus ("+"). I expected to see "%20" instead of a plus character.

Actually, it seems that "+" and "%20" are twins. For example Google uses a plus to encode a space within a search query. For example, if the query is "some text", then the URL will be: http://www.google.com/search?hl=en&q=some+text&btnG=Google+Search

I was tried to encode spaces (and others special characters) to their hex-codes.
That's why the following function was written:


EncodePlainToURL function.

The logic is simple enough:
If the current character is a digits or an alphabetic letter, then pass it "as is"
Otherwise the current character is a special one. So, hex-code should be written in this case This is a code of EncodePlainToURL function:/* * EncodePlainToURL converts a plain text string to an URL-form string. * * Parameters: sIn - input string to be encoded to URL format * sOut - output buffer * Note: the size of "sOut" parameter should be at least equal to triple size * of "sIn" parameter plus one character(for end-terminator '\0') 

 Examples:
 "a" -> "a" * "a b" -> "a%20b" * "a b_cc:\/c%" -> "a%20b%5Fcc%3A%2Fc%25" */ 

char *EncodePlainToURL(const char *sIn, char *sOut) 
{
 int i; 
 char cCurChar; 
 char sCurStr[4] = {0}; 
 sOut[0] = '\0'; for (i = 0; cCurChar = sIn[i]; i++) 
 {
 // if this is a digit or an alphabetic letter

 if (isdigit(cCurChar) || isalpha(cCurChar)) 
 {
 // then write the current character "as is" 
 sprintf(sCurStr, "%c", cCurChar); } 
 else
 { 
 // else convert it to hex-form. "_" -> "%5F" 
 sprintf(sCurStr, "%%%X", cCurChar);
 }
 // append current item to the output string 
 strcat(sOut, sCurStr);
 } 
 return sOut; 
}
 The example of usage is: 
char sIn[] = "t es%d$ + eprst_"; char sOut[100];
 lr_output_message("%s", EncodePlainToURL(sIn, sOut));
 Execute the code, and see the result: 
The input string "t es%d$ + eprst_" was converted to "t%20es%25d%24%20%2B%20eprst%5F".


LoadRunner Training in Bangalore
LoadRunner Training in Hyderabad
LoadRunner Online Training
LoadRunner Training in BTM
LoadRunner Training in Marathahalli
Best LoadRunner Training Institutes in Bangalore 
Best LoadRunner Training Institutes in India
Training Institutes in Bangalore

No comments:

Post a Comment