web_custom_request()函數(shù)是一個(gè)可以用于自定義http請(qǐng)求的“萬(wàn)能”函數(shù)攻臀,一般當(dāng)自定義請(qǐng)求時(shí)可以配合函數(shù)web_add_auto_header()构舟、web_add_header()等系列函數(shù)來(lái)自定義其請(qǐng)求頭,web_custom_request()函數(shù)的Mode字段為HTML時(shí)相當(dāng)于使用HTML錄制方式的函數(shù)炎辨,Mode字段為HTTP時(shí)相當(dāng)于使用URL錄制方式的函數(shù),Method字段可以為GET和POST分別用于模擬http的get和post請(qǐng)求丝格。
請(qǐng)求頭的內(nèi)容撑瞧,可以結(jié)合抓包工具進(jìn)行分析(比如:fiddler)
腳本一:
1 web_custom_request("test1",
2 "URL=http://www.baidu.com",
3 "Method=GET",
4 ?"TargetFrame=",
5 "Resource=0",
6 "Referer=",
7 "Mode=HTTP",
8 "Body=123",
9 LAST);
腳本一實(shí)際發(fā)出的請(qǐng)求:
10 GET / HTTP/1.1
11 User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT)
12 Accept-Encoding: gzip, deflate
13 Accept: */*
14 Connection: Keep-Alive
15 Host: www.baidu.com
1 6 Content-Length: 3
123
25腳本二:
1 web_custom_request("web_custom_request",
2 "URL=http://www.baidu.com",
3 "Method=POST",
4 "TargetFrame=",
5 "Resource=0",
6 "Referer=",
7 "Mode=HTTP",
8 "Body=abcd",
9 LAST);
腳本二實(shí)際發(fā)出的請(qǐng)求:
1 POST / HTTP/1.1
2 Content-Type: application/x-www-form-urlencoded
3 Cache-Control: no-cache
4 User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT)
5 Accept-Encoding: gzip, deflate
6 Accept: */*
7 Connection: Keep-Alive
8 Host: www.baidu.com
9 Content-Length: 4
10 abcd
web_custom_request函數(shù)之Body詳解:
1. Body:
一般情況下Body中內(nèi)容是作為字面值進(jìn)行發(fā)送的,Body中也可以發(fā)送二進(jìn)制流(用十六進(jìn)制表示)显蝌,方法如下预伺,但僅限二進(jìn)制流中不含空字符\x00,如果一段Body的二進(jìn)制流中有空字符曼尊,則web_custom_request實(shí)際發(fā)送的內(nèi)容為第一個(gè)空字符之前的數(shù)據(jù)酬诀,其后的數(shù)據(jù)(包括空)都會(huì)被截?cái)唷?/p>
例如:
1.1 Body內(nèi)容不含空字符\x00
1 web_custom_request("web_custom_request",
2 "URL=http://www.baidu.com",
3 "Method=POST",
4 "TargetFrame=",
5 "Resource=0",
6 "Referer=",
7 "Mode=HTTP",
8 "Body=\x3d\x9d\x1d\xef\xa4\x04\x41",
9 LAST);
發(fā)送數(shù)據(jù)包的Body內(nèi)容為:
1.2 Body內(nèi)容含空字符\x00
1 web_custom_request("web_custom_request",
2 "URL=http://www.baidu.com",
3 "Method=POST",
4 "TargetFrame=",
5 "Resource=0",
6 "Referer=",
7 "Mode=HTTP",
8 "Body=\x3d\x00\x9d\x1d\xef\xa4\x00\x04\x41",
9 LAST);
發(fā)送數(shù)據(jù)包的Body內(nèi)容為:
因此使用Body是無(wú)法發(fā)送含有空的二進(jìn)制數(shù)據(jù)流的,此外骆撇,Body中的內(nèi)容可以使用參數(shù)替代瞒御,web_custom_request函數(shù)的整個(gè)Body字符串參數(shù)("Body=abcd")也是可以使用一個(gè)變量(數(shù)組或字符指針)來(lái)替代的,注意點(diǎn):1神郊、變量中的內(nèi)容不需要含有雙引號(hào)肴裙,例如:char BodyVar[20] = "Body=abcd"; 2、使用變量時(shí)后面加一個(gè)逗號(hào)屿岂,例如:BodyVar,?践宴。
2.?BodyBinary:
當(dāng)要發(fā)送的二進(jìn)制數(shù)據(jù)流中含有空時(shí)可以使用BodyBinary來(lái)發(fā)送,注意下面的代碼爷怀,發(fā)送的請(qǐng)求中第一個(gè)空之后的數(shù)據(jù)仍然被截?cái)啵?發(fā)送數(shù)據(jù)包的Body內(nèi)容同1.2中的截圖:
1web_custom_request("web_custom_request",
2"URL=http://www.baidu.com",
3"Method=POST",
4"TargetFrame=",
5"Resource=0",
6"Referer=",
7"Mode=HTTP",
8"BodyBinary=\x3d\x00\x9d\x1d\xef\xa4\x00\x04\x41\x00\x00\x42",
9 LAST);
正確的寫(xiě)法如下阻肩,使用兩個(gè)轉(zhuǎn)義字符:
1 web_custom_request("web_custom_request",
2 "URL=http://www.baidu.com",
3 "Method=POST",
4 "TargetFrame=",
5 "Resource=0",
6 "Referer=",
7 "Mode=HTTP",
8 "BodyBinary=\\x3d\\x00\\x9d\\x1d\\xef\\xa4\\x00\\x04\\x41\\x00\\x00\\x42",
9 LAST);
即二進(jìn)制數(shù)據(jù)流中含有空也是可以發(fā)送的,上面一欄顯示的是八進(jìn)制表示运授。
BodyBinary中的內(nèi)容同樣可以使用參數(shù)替代烤惊,整個(gè)BodyBinary字符串參數(shù)同樣可以使用變量替換。如下:
1 char*sendbufhex ="\\x3d\\x00\\x9d\\x1d\\xef\\xa4\\x00\\x04\\x41\\x00\\x00\\x42";
2 lr_save_string(sendbufhex,"sendbufhexParam");
3 web_custom_request("web_custom_request",
4 "URL=http://www.baidu.com",
5 "Method=POST",
6 "TargetFrame=",
7 "Resource=0",
8 "Referer=",
9 "Mode=HTTP",
10 "BodyBinary={sendbufhexParam}",
11 LAST);
12 char*sendbufhexBody ="BodyBinary=\\x3d\\x00\\x9d\\x1d\\xef\\xa4\\x00\\x04\\x41\\x00\\x00\\x42";
1 web_custom_request("web_custom_request",
2 "URL=http://www.baidu.com",
3 "Method=POST",
?4 "TargetFrame=",
5 "Resource=0",
6 "Referer=",
7 "Mode=HTTP",
8 sendbufhexBody,
9 LAST);
但是當(dāng)參數(shù)或變量中的內(nèi)容并不是上面這樣直接賦值一個(gè)常量字符串吁朦,而是通過(guò)其他拆分拼接而來(lái)時(shí)柒室,就只需要使用一個(gè)反斜桿,比如:我要發(fā)送的的一串二進(jìn)制流的十六進(jìn)制字符串為:3d009d1defa4000441000042逗宜,參數(shù)寫(xiě)法代碼如下:
1 charsendbuf[100] ="3d009d1defa4000441000042";
2 charsendbufhex[100];
3 chartemp[100];
4 intsendbuflen,i;
5 sendbuflen = strlen(sendbuf);
6 memset(sendbufhex,'\0',sizeof(sendbufhex));
7 for(i=0;i
8 {
9 memset(temp,'\0',sizeof(temp));
10 temp[0] ='\\';
11 temp[1] ='x';
12 temp[2] = sendbuf[i];
13 temp[3] = sendbuf[i+1];
14 lr_output_message("Notify:temp:%s",temp);
15 strcat(sendbufhex,temp);
16 }
17 lr_output_message("Notify:sendbufhex:%s",sendbufhex);
18 lr_save_string(sendbufhex,"sendbufhexParam");
19 lr_output_message("Notify:sendbufhexParam:%s",lr_eval_string("{sendbufhexParam}"));
20 web_custom_request("web_custom_request",
21 "URL=http://www.baidu.com",
22 "Method=POST",
23 "TargetFrame=",
24 "Resource=0",
25 "Referer=",
26 "Mode=HTTP",
27 "BodyBinary={sendbufhexParam}",
28 LAST);
特別注意:拼接的參數(shù)中只需要一個(gè)飯斜杠而不是兩個(gè)飯斜杠雄右,”3d009d1defa4000441000042" ?==》 "\x3d\x00\x9d\x1d\xef\xa4\x00\x04\x41\x00\x00\x42"
變量替換寫(xiě)法代碼如下:
1 charsendbuf[100] ="3d009d1defa4000441000042";
2 charsendbufhex[100];
3 chartemp[100];
4 intsendbuflen,i;
5 sendbuflen = strlen(sendbuf);
6 lr_output_message("Notify:sendbuflen:%d",sendbuflen);
7 memset(sendbufhex,'\0',sizeof(sendbufhex));
8 strcat(sendbufhex,"BodyBinary=");
9 for(i=0;i
10 {
11 memset(temp,'\0',sizeof(temp));
12 temp[0] ='\\';
13 temp[1] ='x';
14 temp[2] = sendbuf[i];
15 temp[3] = sendbuf[i+1]??? ;
16 lr_output_message("Notify:temp:%s",temp);
17 strcat(sendbufhex,temp);
18 }
19 lr_output_message("Notify:sendbufhex:%s",sendbufhex);
20 web_custom_request("web_custom_request",
21 "URL=http://www.baidu.com",
22 "Method=POST",
23 ?"TargetFrame=",
24 "Resource=0",
25 "Referer=",
26 "Mode=HTTP",
27 sendbufhex,
28 LAST);
3.?RAW_BODY
可用于發(fā)送json格式的數(shù)據(jù):
1 ?web_custom_request("request",//隨便寫(xiě)個(gè)名字
2 ?"Method=POST",//請(qǐng)求的方法
3 ?"URL=http://www.baidu.com",??????? //請(qǐng)求地址
4 ?"RecContentType=application/json",//指定相應(yīng)頭的Content-Type,這里是JSON
5 ?"EncType=application/json",//指定請(qǐng)求頭的Content-Type纺讲,這里也是JSON
6 ?"Mode=HTML",
7 ?RAW_BODY_START,//請(qǐng)求BODY開(kāi)始的標(biāo)識(shí)符
8 "{\"userIds\":[1300000001,1300002029,1300003163],\"type\":0}",//BODY的內(nèi)容
? 9 55,//上面一行BODY內(nèi)容的長(zhǎng)度
10 RAW_BODY_END,//請(qǐng)求BODY結(jié)束的標(biāo)識(shí)符
11 LAST);
實(shí)際發(fā)送的數(shù)據(jù)內(nèi)容為:
web_custom_request函數(shù)語(yǔ)法詳解
語(yǔ)法:
Int web_custom_request (const char *RequestName, ,[EXTRARES, ,] LAST );
返回值:
LR_PASS(0)代表成功
LR_FAIL(1)代表失敗擂仍。
參數(shù):
1、RequestName:步驟的名稱熬甚,VuGen中樹(shù)形視圖中顯示的名稱逢渔。
2、List of Attribute:支持的屬性有以下幾種:
1)URL:
頁(yè)面地址乡括。
2)Method :
頁(yè)面的提交方式肃廓,POST或GET智厌。
3)EncType:
編碼類型。此參數(shù)給出一個(gè)內(nèi)容類型(Content-Type)盲赊,指定其做為回放腳本時(shí)“Content-Type”請(qǐng)求頭的值铣鹏,例如“text/html”。Web_custom_request函數(shù)不處理未編碼的請(qǐng)求體角钩。請(qǐng)求體參數(shù)將會(huì)使用已經(jīng)指定的編碼方式吝沫。因此呻澜,如果指定了不匹配HTTP請(qǐng)求體的“EncType”,會(huì)引發(fā)服務(wù)端的錯(cuò)誤递礼。通常我們建議不要手動(dòng)修改錄制時(shí)的“EncType”值。
任何對(duì)于“EncType”的指定都會(huì)覆蓋web_add_[auto_]header函數(shù)指定的Content-Type羹幸。當(dāng)指定了“EncType=”(空值)時(shí)脊髓,不會(huì)產(chǎn)生“Content-Type” 請(qǐng)求頭。當(dāng)省略了“EncType”時(shí)栅受,任何一個(gè)web_add_[auto_]header函數(shù)都會(huì)起作用将硝。如果既沒(méi)有指定EncType也沒(méi)有web_add_[auto_]header函且“Method=POST”,
“application/x-www-form-urlencoded”會(huì)做為默認(rèn)值來(lái)使用屏镊。其他情況下依疼,不會(huì)產(chǎn)生Content-Type請(qǐng)求頭。
4)BodyFilePath:
作為請(qǐng)求體傳送的文件的路徑而芥。它不能與下面的屬性一起使用:Body律罢,或者其他Body屬性或Raw Body屬性包括BodyBinary,BodyUnicode棍丐,RAW_BODY_START或Binary=1误辑。
5)UserAgent:
用戶代理,它是一個(gè)HTTP頭的名字歌逢,用來(lái)標(biāo)識(shí)應(yīng)用程序巾钉,通常是瀏覽器,它呈現(xiàn)的是用戶和服務(wù)器的交互秘案。
例如:頭信息“User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)”識(shí)別的是Window NT下的IE瀏覽器6.0砰苍。其他的User-Agent的值用來(lái)描述其他的瀏覽器,或者非瀏覽器程序阱高。通常赚导,一個(gè)應(yīng)用程序中所有的請(qǐng)求都使用相同的用戶代理,錄制者作為一個(gè)運(yùn)行時(shí)參數(shù)來(lái)指定(Run-Time Setting—Browser Emulation—User Agent)讨惩。不管怎么說(shuō)辟癌,即使是在一個(gè)簡(jiǎn)單的瀏覽器進(jìn)程中,仍有可能會(huì)用到直接與服務(wù)器交互的非瀏覽器組件(例如ActiveX控件)荐捻,通常他們有著不同于瀏覽器的用戶代理屬性黍少。指定“UserAgent”表示這是一個(gè)非瀏覽器的請(qǐng)求寡夹。指定的字符串被HTTP頭“User-Agent:” 使用,在某些情況下厂置,它同時(shí)會(huì)影響回放腳本時(shí)的行為菩掏。例如,不使用瀏覽器緩存昵济,假設(shè)指定的URL屬于資源等等智绸。(LoadRunner本身不檢查指定的字符串與瀏覽器本身的值是否相同)
6)Binary:
“Binary=1”表示頁(yè)面請(qǐng)求體中的每一個(gè)以file://x/##形式出現(xiàn)的值(在這里“##”代表2個(gè)十六進(jìn)制數(shù)字),都會(huì)被替換為單字節(jié)的十六進(jìn)制的值访忿。如果“Binary=0”(默認(rèn)值)瞧栗,所有的字符序列只是按照字面的值傳遞。需要注意雙斜杠的用法海铆。在C編譯器中雙斜杠被解釋為單斜杠迹恐。如果不需要零字節(jié),單斜杠可以在Binary不等于1的情況下使用(例如卧斟,使用\x20代替file://x20/)殴边。如果需要零字節(jié),那么只能使用file://x00/且設(shè)置 “Binary=1”珍语,\x00在邏輯上會(huì)被截?cái)唷?/p>
7)ContentEncoding
指定請(qǐng)求體的使用指定的方式(gzip或者deflate)進(jìn)行編碼(例如锤岸,壓縮),相應(yīng)的“Content-Encoding:” HTTP頭會(huì)和此請(qǐng)求一起發(fā)送板乙。這個(gè)參數(shù)適用于web_custom_request和web_submit_data是偷。
8)FtpAscii:
“1”使用ASCII模式處理FTP操作;"0" 使用二進(jìn)制模式亡驰。
9)TargetFrame:
當(dāng)前鏈接或資源所在Frame的名稱晓猛。除了Frame的名字,還可以指定下面的參數(shù):
_BLANK:打開(kāi)一個(gè)空窗口凡辱。
_PARENT:把最新更改過(guò)的的Frame替換為它的上級(jí)戒职。
_SELF:替換最新更改過(guò)的的Frame。
_TOP:替換整個(gè)頁(yè)面透乾。
10)RecContentType:
錄制腳本時(shí)響應(yīng)頭的內(nèi)容類型洪燥。例如text/html、 application/x-javascript等乳乌。當(dāng)沒(méi)有設(shè)置Resource屬性時(shí)捧韵,用它來(lái)確定目標(biāo)URL是否是可記錄的資源。此屬性包含主要的和次要的資源汉操。最頻繁使用的類型是 text再来、application、image。次要的類型根據(jù)資源不同變化很多芒篷。例如:"RecContentType=text/html":表示html文本搜变。"RecContentType=application/msword":表示當(dāng)前使用的是Msword。
11)Referer:
當(dāng)前頁(yè)面關(guān)聯(lián)的頁(yè)面针炉。如果已經(jīng)顯式指定了url的地址挠他,此項(xiàng)可以省略。
12)Resource:
指示URL是否屬于資源篡帕。1 是殖侵;0 不是。設(shè)置了這個(gè)參數(shù)后镰烧,RecContentType參數(shù)被忽略拢军。“Resource=1”拌滋,意味著當(dāng)前操作與所在腳本的成功與否關(guān)系不大朴沿。在下載資源時(shí)如果發(fā)生錯(cuò)誤猜谚,是當(dāng)作警告而不是錯(cuò)誤來(lái)處理的败砂;URL是否被下載受“Run-Time Setting—Browser Emulation--Download non-HTML resources” 這個(gè)選項(xiàng)的影響。此操作的響應(yīng)信息是不做為HTML來(lái)解析的魏铅〔蹋“Resource=0”,表明此URL是重要的览芳,不受發(fā)送請(qǐng)求(RTS)的影響斜姥,在需要時(shí)也會(huì)解析它。
13)ResourceByteLimit:
web頁(yè)面下載資源的極限大小沧竟。當(dāng)達(dá)到設(shè)置的極限后铸敏,無(wú)法下載其他資源。僅僅對(duì)需要下載的資源有效悟泵。下載過(guò)程:如果總計(jì)下載大小小于極限值杈笔,則正常開(kāi)始下載。如果當(dāng)下載時(shí)達(dá)到了設(shè)置的極限值糕非,資源大小可知(在HTTP響應(yīng)頭中指定了Content-Length)蒙具,這中情況下,如果只需要一個(gè)緩沖區(qū)朽肥,那么下載可以正常完成禁筏。如果需要的不止一個(gè)緩沖區(qū),或者資源大小不可知衡招,下載就會(huì)中斷同時(shí)關(guān)閉當(dāng)前連接篱昔。這個(gè)特性可以用來(lái)模擬用戶不等待一個(gè)頁(yè)面下載完成時(shí)導(dǎo)航到另一個(gè)頁(yè)面的情況。在HTTP模式中無(wú)法使用始腾,在Concurrent Groups(Vuser腳本中的一個(gè)區(qū)州刽,此區(qū)中的所有函數(shù)并發(fā)執(zhí)行)區(qū)中也無(wú)法使用舀射。僅僅適用于Sockets的回放,WinInet也是不適用的怀伦。
14)Snapshot:
快照的文件名脆烟。
15)Mode:
兩種錄制級(jí)別HTML、HTTP房待。HTML級(jí)別--在當(dāng)前Web界面上錄制直觀的HTML動(dòng)作邢羔。以一步步的web_url、web_link桑孩、web_image拜鹤、web_submit_form來(lái)錄制這些動(dòng)作。VuGen僅僅錄制返回HTML頁(yè)面的請(qǐng)求流椒,不處理腳本和應(yīng)用程序敏簿。HTTP級(jí)別--VuGen把所有的請(qǐng)求錄制為web_url指令,不生成web_link宣虾、web_image惯裕、web_submit_form這些函數(shù)。這種方法更為靈活绣硝,但是生成的腳本不夠直觀蜻势。
16)ExtraResBaseDir:
根URL,放在EXTRARES組里鹉胖。它是用來(lái)解析相對(duì)URL的(譯者加:類似于Windows的相對(duì)路徑和絕對(duì)路徑)握玛。URL可以是絕對(duì)路徑(例如http://weather.abc.com/weather/forecast.jsp?locCode=LFPO),也可以是相對(duì)路徑(例如“forecast.jsp?locCode=LFPO”)甫菠。真正的URL的下載是通過(guò)絕對(duì)路徑進(jìn)行的挠铲,所以相對(duì)URL路徑必須使用根路徑URL去解析。例如寂诱,使用http://weather.abc.com/weather/做為根路徑來(lái)解析“forecast.jsp?locCode=LFPO”拂苹,最后的URL是:http://weather.abc.com/weather/forecast.jsp?locCode=LFPO。如果沒(méi)有指定“ExtraResBaseDir”刹衫,默認(rèn)的根URL是主頁(yè)面的URL醋寝。
17)Body:
請(qǐng)求體。不同的應(yīng)用中带迟,請(qǐng)求體分別通過(guò)Body音羞、BodyBinary或者BodyUnicode參數(shù)來(lái)傳遞。請(qǐng)求體可以只使用其中一個(gè)參數(shù)仓犬,也可以使用一連串的分開(kāi)的參數(shù)組成多請(qǐng)求體嗅绰。例如:
web_custom_request(
……
"BodyUnicode=REPRICE"
"BodyBinary=\\x08\\x00\\xCC\\x02\\x00\\x00"
"Body=.\r\n"
"-dxjjtbw/(.tp?eg:ch/6--\r\n",
LAST);
在上面的代碼中,使用了3個(gè)參數(shù)來(lái)劃分請(qǐng)求體窘面,一個(gè)是Unicode段翠语,一個(gè)是二進(jìn)制段,最后一個(gè)是常規(guī)的字符串财边。最終的請(qǐng)求體是這3個(gè)參數(shù)按照在函數(shù)中的順序連接起來(lái)的值肌括。還有一個(gè)很少用到的參數(shù),Binary酣难。它也能描述二進(jìn)制請(qǐng)求體谍夭,但只允許函數(shù)中只有一個(gè)請(qǐng)求體參數(shù)。所有的請(qǐng)求體都是ASCII字符憨募,以null結(jié)束紧索。
Body--表示規(guī)則的,可打印的字符串菜谣。無(wú)法表示空字節(jié)珠漂。所有的字符都以一個(gè)反斜杠表示。注意:在舊的腳本中,可以看見(jiàn)不可打印的字符在請(qǐng)求體中以16進(jìn)制方式進(jìn)行編碼尾膊。(例如 “\\x5c”)媳危,在這種情況下,必須使用“Binary=1”來(lái)標(biāo)識(shí)眯停〖糜撸空字節(jié)使用"file://0.0.0.0/"來(lái)表示。 相反莺债,新腳本則會(huì)把把請(qǐng)求體分開(kāi)放在不同的參數(shù)中("Body=...", "BodyBinary=...", Body=...")。
BodyBinary--表示二進(jìn)制代碼签夭。不可打印的字符在請(qǐng)求體中以16進(jìn)制方式file://xhh/進(jìn)行編碼齐邦。在這里HH 表示十六進(jìn)制值〉谧猓空字節(jié)使用"file://0.0.0.0/"來(lái)表示措拇。
BodyUnicode--美國(guó)英語(yǔ),特指拉丁UTF-16LE(little-endian)編碼慎宾。這種編碼方式會(huì)在在每個(gè)字符末尾附加一個(gè)0字節(jié)丐吓,以便使字符更可讀。但是在VuGen中實(shí)際的參數(shù)把所有的0字節(jié)都去掉的趟据。但是在發(fā)送給Web服務(wù)器之前, web_custom_request函數(shù)會(huì)重新添加0字節(jié)的券犁。對(duì)于不可打印的字符,使用單反斜杠表示,無(wú)法表示空字節(jié)汹碱。
注意:如果請(qǐng)求體大于100K,會(huì)使用一個(gè)變量來(lái)代替Body參數(shù)粘衬。變量是在 lrw_custom_body.h中定義的。
18)Raw Body:
請(qǐng)求體是作為指針傳遞的,此指針指向一串?dāng)?shù)據(jù)稚新。 二進(jìn)制的請(qǐng)求體可以使用BodyBinary 屬性來(lái)發(fā)送(或者使用Body 屬性來(lái)傳遞,前提是必設(shè)置
"Binary=1" )勘伺。無(wú)論如何,這種方法需要使用轉(zhuǎn)義字符反斜杠把不可打印的字符轉(zhuǎn)換為ASCII字符。為了能有一種更簡(jiǎn)便的表現(xiàn)原始數(shù)據(jù)的方式褂删,Raw Body屬性應(yīng)運(yùn)而生飞醉,可以傳遞指向二進(jìn)制數(shù)據(jù)的指針。使用4個(gè)連續(xù)的參數(shù)集來(lái)表示指針屯阀,而且必須按照順序排列:
RAW_BODY_START
指向數(shù)據(jù)緩沖區(qū)的指針
(int) 長(zhǎng)度
RAW_BODY_END
例子:
char *abc= .../* a pointer to the raw data */
web_custom_request("StepName",
"URL=http://some.url ",
"Method=POST",
RAW_BODY_START,
"abc",
3,
RAW_BODY_END,
LAST);
在應(yīng)用中冒掌,即使設(shè)置了數(shù)據(jù)的長(zhǎng)度為0,指針也必須有值蹲盘,不能為空股毫。在“Binary=1”時(shí),不能使用上面的語(yǔ)法傳遞原始數(shù)據(jù)召衔。數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)不能使用參數(shù)化铃诬。也就時(shí)說(shuō),緩沖區(qū)中的任何參數(shù)(例如 "{MyParam}")不能被正確的替代為相應(yīng)的值苍凛,只會(huì)以字面值發(fā)送趣席。
3、EXTRARES:表明下面的參數(shù)將會(huì)是List Of Resource Attributes了醇蝴。
4宣肚、LAST :結(jié)尾的標(biāo)示符。
5悠栓、List of Resource Attributes
僅僅當(dāng)Recording Options--Recording --HTML-based script-- Record within the current script step選項(xiàng)被選中時(shí)霉涨,List of Resource Attributes才會(huì)被插入到代碼中。Web頁(yè)面中的非HTML機(jī)制產(chǎn)生了資源列表惭适,包含了Javascript, ActiveX, Java applets and Flash所請(qǐng)求的資源笙瑟。VuGen's 的Recording 選項(xiàng)中,可以設(shè)置把這些資源錄制在當(dāng)前的操作中(默認(rèn)是此設(shè)置)還是作為單獨(dú)的步驟來(lái)錄制癞志。
不斷的總結(jié)往枷,才能不斷的提高;不斷的思考凄杯,才能不斷的進(jìn)步错洁!