2011-09-20 33 views
8

我正在與JMeter一起編寫一些性能測試。我需要做的一件事就是動態構建一個巨大的json請求,並將其作爲POST請求paylod發送。使用BSF預處理器,我可以動態修改有效載荷,但是我的JavaScript字符串正在編碼,而我想發送它而不被編碼。用BSF預處理器發送JSON POST請求

我不確定BSF預處理器如何阻止它被編碼。我目前使用改變我的POST請求負載的命令如下:

var jsonData = '[{"item":"value","something":"everything"}]'; 
sampler.addArgument("",jsonData); 

我真的很感激,如果你可以點我一些例子清楚地解釋BSF的預處理器是如何預期使用。

任何指針跳過編碼也將不勝感激。您取樣「HTTPArgument.always_encode」假此

回答

1

由於JMeter的2.6可以使用使用帖子正文選項卡中的原始請求窗格。

所以你的解決方案是做到以下幾點:

  1. 在BSF採樣,把你JSON在一個變量:

    var jsonData = '[{"item":"value","something":"everything"}]'; 
    vars.putObject("jsonData",jsonData); 
    
  2. 在帖子正文,放:

    ${jsonData} 
    

另一個選擇使用喲烏爾方法是將在使用BSFPreProcessor BeanShell的語言(未JavaScript的):

import org.apache.jmeter.protocol.http.util.HTTPArgument; 
String jsonData = "[{\"item\":\"value\",\"something\":\"everything\"}]"; 
HTTPArgument arg =new HTTPArgument("", jsonData, null, true); 
arg.setAlwaysEncoded(false); 
sampler.getArguments().addArgument(arg); 

問候

菲利普M.

-1

集屬性應該禁用參數編碼

+1

溶液不完整的,見下文充分一個 –