2

我有一个像

 user logs in ( /login)

 navigate to the reservations page to get all the reservation id (/reservations)

  Through json path extractor it gets first reservation id from the JSON.($..reservationLists..id[0], reservationid)

  navigate to the first reservation id (/reservation/${reservationid})

在它浏览的每个页面中,HTTP 标头管理器都需要适用于该页面的 handShakeKey,它基本上是 url、secretKey、publicKey 的组合。(secretKey、publicKey 都是静态的,但是 url 会发生变化)

对于像(/login、/reservations)这样的静态 url,我在开头添加了一个 BSF 预处理器并声明变量,并在 HTTP 标头管理器中将这些变量用作 ${handshakeKey_reservations}、${handshakeKey_login} 等,效果很好。

  var urls = ["login", "reservations", "logout", "profile"];

  for (var i = 0; i < urls.length; i++) {

    var handShakeKeyForStaticUrls = CryptoJS.SHA1("/"+urls[i]+"abcdediiebneC"+"12345678");

      handShakeKeyForStaticUrls = handShakeKeyForStaticUrls.toString(CryptoJS.enc.Base64);

     vars.put("handshakeKey_"+urls[i], handShakeKeyForStaticUrls);

      }

现在问题出在动态网址(/reservation/${reservationid}、/reservation/${reservationid}/summary 等......)

我在想写一个类似的java脚本函数

    function getHandShakeKey(url)
       {

       var handShakeKeyForDynamicUrls = CryptoJS.SHA1(url+"abcdeffe"+"12345678");

       handShakeKeyForDynamicUrls = handShakeKeyForDynamicUrls.toString(CryptoJS.enc.Base64);

       //return handShakeKeyForDynamicUrls;

      vars.put("handShakeKeyForDynamicUrls", handShakeKeyForDynamicUrls);

       }

然后在 HTTP 标头管理器中,我会喜欢

握手密钥 ${_javaScript(getHandShakeKey("/reservation/${reservationid}"))}

所以问题是我可以在哪里注册这个 java 脚本函数,以便我可以在任何地方调用它。

虽然我目前所做的解决方法是向每个包含动态 url 的 http 采样器添加一个 BSF 后处理器,并生成和声明仅适用于该 url 并在相应的 HTTP 标头管理器中使用相同的 handShakeKey。我需要摆脱这个。

4

0 回答 0