2013-05-22 45 views
0

對於POST方法我有這片在LR碼(它是工作):如何重寫使用POST metod的函數以在LoadRunner中使用GET方法?

web_custom_request(transname, 
URL, 
"Method=POST", 
"TargetFrame=", 
"Mode=HTML", 
"Resource=0", 
"Referer=", 
EncodingType, 
lr_eval_string(request), 
LAST); 

這段代碼被放置在分離的.c文件和使用的使用XML的相關功能的長序列從user_init稱爲,數組,字符串數據。

URL POST請求具有結構在這樣user_init: URL = HTTPS:// {HOST} /aaa/bbb/page.asp

另外user_init包含這一段代碼:

web_custom_request("Login_page", 
"URL=http://{HOST}/api/04_00/Pr_NAME.asp", 
"Method=POST", 
"RecContentType=text/xml", 
"Body=" 
"<?xml version=\"1.0\"?>" 
"<Request xmlns=\"http://api.rr.com/Pr_NAME\">\r\n" 
" <MethodRequest>\r\n" 
" <AuthenticateUserRequest appID=\"value_appID\" password=\"value_password\">\r\n" 
"  <User>\r\n" 
"  <LoginName>value_LoginName</LoginName>\r\n" 
"  </User>\r\n" 
" </AuthenticateUserRequest>\r\n" 
" </MethodRequest>\r\n" 
"</Request>\r\n", 
LAST); 

我需要額外的代碼,這將允許發送POST和GET請求到Web服務。現在它只發送POST請求。

有一些問題:

1)我應該如何改變這個函數來獲取可能同時發送類型的請求,POST和GET?我應該添加什麼字符串到這個函數?

2)如何更改GET請求的URL?

我認爲,它應該是這樣的:

URL=https://{HOST}/aaa/bbb/page.asp?param1=value1&param2=value2...&paramN=valueN 

但我要補充什麼參數,參數1,參數2,...,paramN?

如何定義這個URL構造需要放置多少個參數?

我應該寫這樣的結構:

URL=http://{HOST}/api/04_00/Pr_NAME.asp?appID=value_appID&password=value_password&LoginName=value_LoginName 

或者我不應該添加的LoginName = value_LoginName在這種結構?

3)如何將1個函數中的2個方法POST和GET結合起來,有可能從LR發送兩種類型的請求POST和GET?

請問,你能幫助我嗎?我是使用POST和GET方法和函數在LR中傳輸數據的新手。

回答

1

下面是一些答案(不完全與LR有關)。 1)POST和GET是HTTP動詞,告訴服務器你期望它如何處理你的請求。沒有關於服務器應該做什麼的規定,而是約定。約定爲: GET - 告訴服務器:請給我提供與我在查詢字符串中提供的參數相關的數據。 POST - 告訴服務器:這個請求的正文中有一些數據,請用它做一些事情(通常不是總是創建一個記錄)。 在同一請求中沒有發送兩種類型的動詞的意思。 在任何情況下,設置動詞使用「方法」參數(在你的例子中它說「方法= POST」,所以你可以將其更改爲「方法= GET」

2)GET請求有時需要參數。作爲一個慣例,你不會在Body中發送這些參數,而是在一個叫做querystring的結構中,這個結構位於用「?」分隔的URL之後。查詢字符串是參數名稱及其值的列表。請谷歌「查詢字符串」瞭解更多信息。您應該使用的參數是服務器預期的參數。您必須向服務器創建者詢問要發送哪些參數。

3)正如我上面提到的,這沒有任何意義。

希望這會有所幫助。

+0

非常感謝您的解答,特別是在第一部分。在可視化這個模式之前,我花了很多時間閱讀文章(通常在php中)。你有非常容易和不容置疑的語言來解釋。 2)GET請求中的參數,服務器期望在查詢字符串中寫入服務器上的任何位置?我應該總結一下,該服務器首先檢查querystring中的參數,並將它們與服務器上所需的參數列表進行比較,如果它們匹配,服務器會發送一些信息作爲對此請求的答案? 3)是的,我明白了。謝謝! –

+1

2)我不知道沒有問服務器實施者的方式。對於第二個問題,是的。它就像C中的一個函數,它需要幾個參數,如果你不提供它們,那麼可能會發生一些不好的事情。 – Buzzy

0

由於您可能已記錄了此對話,所以很自然的問題是,您爲什麼要將應用程序代碼中的請求方法更改爲除部署以外的其他內容?這是您在部署和測試之間進行的測試中的一次突破,需要注意您的測試結果。

+0

我的目標是編寫(或重寫)可以發送GET請求的函數,學習如何在LR中使用C實現此操作。因此,我需要知道我必須在代碼中更改以獲得此結果。這個任務就像自學一樣。 –

0

請求的方法應該是POST或GET或其他類型的方法。不應該有兩個。我明白你在做自學,但這是違反協議的。

相關問題