定義:允許使用者運用任何HTTP支援的方式自訂HTTP請求
函數形式:web_custom_request( const char *RequestName, ,
[EXTRARES, ,] LAST );
樣本1:Body可使用屬性的示範
web_custom_request(……"BodyUnicode=REPRICE""BodyBinary=\\x08\\x00\\xCC\\x02\\x00\\x00""Body=.\r\n""-dxjjtbw/(.tp?eg:ch/6--\r\n",LAST);
註:在上面的代碼中,使用了3個參數來劃分請求體,一個是Unicode,一個是二進位,最後一個是常規的字串。最終的請求體是這3個參數按照在函數中的順序串連起來的值。還有一個很少用到的參數,Binary。它也能描述二進位請求體,但只允許函數中只有一個請求體參數。所有的請求體都是ASCII字元,以null結束。
樣本2:以下錄製的指令碼中,使用者開始錄製從 http://lazarus/html/forms/file.html。當使用者提交他的你請求時,VuGen插入了web_add_header函數,接著在調用web_custom_request函數。
web_url("file.html", "URL=http://lazarus/html/forms/file.html", "TargetFrame=_TOP", LAST ); web_add_header("Content–Type", "multipart/form–data; boundary=–––––––––––––––––––––––––––292742461228954"); web_custom_request("post_query.exe", "Method=POST", "URL=http://lazarus/cgi–bin/post_query.exe", "Body=–––––––––––––––––––––––––––––292742461228954\r\nContent–Disp" "osition: form–data; name=\"entry\"\r\n\r\nText\r\n––––––––––" "–––––––––––––––––––292742461228954\r\nContent–Disposition: f" "–––––––––––292742461228954––\r\n", "TargetFrame=", LAST );
樣本3:Raw Body的使用示範
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);
註:在應用中,即使設定了資料的長度為0,指標也必須有值,不可為空。在“Binary=1”時,不能使用上面的文法傳遞未經處理資料。資料緩衝區中的資料不能使用參數化。也就是說,緩衝區中的任何參數(例如 “{MyParam}”)不能被正確的替代為相應的值,只會以字面值發送。
樣本4:在Body屬性中使用二進位代碼
可以使用下面的格式在web_custom_request 函數的“Body”屬性中加入二進位字串。
\x[char1][char2]
通過2個字元[char1][char2]來表示十六進位的值。
例如:\x24表示16*2+4=36,它代表“$”符號,\x2B代表的是“+”符號。
如果不足2個字元,也不是有效十六進位字元,VuGen則會當作ASCII文本處理。所以要注意,對於不足2個字元的十六進位,要在前面補0。例如 “\x2”是無效的十六進位串,需要邊為“\x02”。
注意二進位的值是以“\x” 的形式出現在指令碼中的,也就是說在“x” 前面有2個反斜線。這是由C語言的轉義文法決定的。但是,當使用VuGen產生web_custom_request 函數時,只需要輸入一個反斜線。
如果在web_custom_request 中使用參數化,定義參數時只需要包含一個反斜線這是由於參數替換時是不考慮C的文法轉換的。