0

私は次のようなシナリオを持っています

 user logs in ( /login)

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

  Through regular expression I retrieve all reservation ids like reservationids_1=19678406 etc...

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

ナビゲートするすべてのページで、HTTP ヘッダー マネージャーは、基本的に url、secretKey、publicKey の組み合わせである、そのページに適用可能な handShakeKey を必要とします。( 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);

      }

問題は動的 URL (/reservation/${reservationid}、/reservation/${reservationid}/summary など.......) です。

回避策として、すべての動的 URL HTTP サンプラーの前に BSF ポスト プロセッサを配置しようとしました。

//reservationid = "19678406";

reservationid = "${reservationids_1}";

vars.put ("val", reservationid);

vars.put ("type", typeof(reservationid));

 var handShakeKeyForDynamicUrls = CryptoJS.SHA1( "/reservation/" + reservationid +"abcdeeee"+"12345678"); 

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

 vars.put("handShakeKeyForDynamicUrls", handShakeKeyForDynamicUrls);

HTTP ヘッダー マネージャーでは、handshakeKey ${handShakeKeyForDynamicUrls} を使用しています。

BSFサンプラー(javascript)でハードコードされたreservationid = "19678406"を使用している場合。

例としては正常に動作します

 GET https://<servername>/reservation/19678406
 handshake key :- 21d1ce663d079b5583d76730f6f1477d8f6ae
 Also in the debug sampler type and val coming as string and 19678406 which is OK

ただし、BSFサンプラー(javascript)でreservationid = "${reservationids_1}"を使用している場合; それは失敗します

  GET https://<servername>/reservation/19678406
  handshake key :- b607876d69f5d59c5258bcd5a2a064bbcf35
 Also in the debug sampler type and val coming as string and 19678406 

したがって、両者の違いが理解できません。なぜ失敗したのか。パラメータを渡す場合にハードコードされた値の代わりに (両方の場合で文字列型と値が同じ)、取得に失敗した理由。

これについて何か考えはありますか??

注: - ログ ビューアにエラーはありません。

4

1 に答える 1

0

私は回避策を実行し、それはうまくいきました。

その前に別のBSFサンプラー(BeanShell)を追加し、次のように言及しました

vars.put ("reservationid", "${reservationid_1}");

次に、次の BSF ポスト プロセッサ (Java スクリプト)

 var handShakeKeyForDynamicUrls = CryptoJS.SHA1( "/reservation/${reservationid}" +"abcdeeee"+"12345678"); 

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

vars.put("handShakeKeyForDynamicUrls", handShakeKeyForDynamicUrls);
于 2013-10-09T09:22:07.820 に答える