国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Jmeter beanshell preprocessor用法

2019-11-08 00:25:57
字體:
來源:轉載
供稿:網友

上傳圖片太麻煩,具體操作見:http://blog.csdn.net/quiet_girl/article/details/50577324

我大概介紹下別人沒有的。

1、對請求報文的預處理,beanshell PReprocessor的用法。在beanshell preprocessor頁面,script腳本處,加入你需要對采樣的報文的一些處理。

記得引入jar包,點擊測試計劃,在本頁面,點擊添加目錄或者jar 到classpath。本實例需要的jar包已上傳到我的下載資源了

如果缺少jar寶,會報異常,

 org.apache.jorphan.util.JMeterException: Error invoking bsh method: eval ''import .... 

在beanshell preprocessor頁面,script腳本和如下:

其中com.util.SignUtils該類為自己在eclipse下寫的java工具類,用于對請求報文參數所做的一些加密算法處理,并將加密后的密文,添加到請求報文中,再發接口。

import com.alibaba.fastjson.JSON;import net.sf.json.JSONObject;import com.util.SignUtils;import org.apache.jmeter.protocol.http.sampler.*;import org.apache.jmeter.samplers.*;import org.apache.jmeter.config.*;   import org.apache.jmeter.protocol.http.sampler.*;import org.apache.jmeter.protocol.http.util.*;import java.util.HashMap;import java.util.Map;import org.apache.jmeter.config.Argument;import org.apache.jmeter.config.Arguments;import org.apache.jmeter.protocol.http.util.HTTPArgument;try { //自定義變量 //讀取配置.設置頭信息和公共信息         //請求體重置加密    Arguments arguments =  sampler.getArguments();     Map inMap=new HashMap();//    Argument arg = arguments.getArgument(0);     int len=arguments.getArgumentCount();                        for(int i=0;i<len;i++){                Argument jpro=arguments.getArgument(i);                String key=jpro.getName();                String ret=jpro.getValue();                System.out.println(key+","+ret);                inMap.put(key,ret);            }         if(inMap.size() !=0){          JSONObject parSEObject=new JSONObject();     String jsonStr=parseObject.fromObject(inMap).toString();;     log.info("jsonStr====********************************************************************"+ jsonStr);           SignUtils signUtils=new SignUtils();        //加密        String postData = signUtils.getSigeStr(inMap);                     log.info("postData====**************************************postData******************************"+ postData);          arguments.addArgument(new HTTPArgument("encodeStr",postData));            sampler.setArguments(arguments);
//設置新post 數據     } } catch (Exception ex) { log.info("Script execution failed===========================================", ex);}
com.util.SignUtils自定義工具類如下:

public class SignUtils {	public static String getSigeStr(Map<String, Object> paramMap){		String encodeAture="";encodeAture = md5Encoder(
paramMap)
return encode;}}

 

另外一個實例:請求報文的前置處理腳本:import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.JSONObject;import sun.misc.BASE64Decoder;import sun.misc.BASE64Encoder;import javax.crypto.Cipher;import javax.crypto.spec.IvParameterSpec;import javax.crypto.spec.SecretKeySpec;import com.xx.x.util.*;import org.apache.jmeter.protocol.http.sampler.*;import org.apache.jmeter.samplers.*;import org.apache.jmeter.config.*;   import org.apache.jmeter.protocol.http.sampler.*;import org.apache.jmeter.protocol.http.util.*;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.util.Properties;import com.doctor.commons.*;try {      //自定義變量     //讀取配置.設置頭信息和公共信息      Properties properties = new Properties();      String fileName = ${configFile}+"";      FileInputStream inputStream = new FileInputStream(fileName);      properties.load(inputStream);      String accountId =  properties.getProperty("accountId");      String sign = properties.getProperty("sign");      String accessKey = properties.getProperty("accessKey");      String token = properties.getProperty("token");      vars.put("accountId",accountId);      vars.put("sign",sign);      vars.put("accessKey",accessKey);      vars.put("token",token);      if (inputStream != null) {            inputStream.close();      }        String deviceId = ${deviceId}+"";    String secretKey = ${secretKey}+"";     //請求體重置加密    Arguments arguments =  sampler.getArguments();    Argument arg = arguments.getArgument(0);    String body = arg.getValue();    log.info("PreProcessor==========================================="+ body);         JSONObject parseObject = JSON.parseObject(body);     log.info("====********************************************************************"+ parseObject);     String data =   parseObject.getString("data");    if(data !=null){         log.info("====********************************************************************"+ data);                //加密        String encryptData = AESUtis.appAESEncrypt(data, deviceId, secretKey);          log.info("encryptData====********************************************************************"+ encryptData);            JSONObject jsonObject = new JSONObject();          jsonObject.put("data", encryptData);          String  postData = jsonObject.toJSONString();          log.info("postData====**************************************postData******************************"+ postData);              //設置新post 數據             arg.setValue(postData);    }    } catch (Exception ex) {    log.info("Script execution failed===========================================", ex);} 響應報文的后置處理腳本:import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.JSONObject;import sun.misc.BASE64Decoder;import sun.misc.BASE64Encoder;import javax.crypto.Cipher;import javax.crypto.spec.IvParameterSpec;import javax.crypto.spec.SecretKeySpec;import com.customerdefine.util.*;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.util.Properties;import com.doctor.commons.*;     try {      //先取自定義變量,等用到的時候,再取說找不到定義           String secretKey =  ${secretKey}+"";       String deviceId = ${deviceId}+"";      //服務器返回的公共配置屬性保存       String fileName = ${configFile}+"";       log.info("====*fileName*******************************************************************"+ fileName);             //對返回的json數據處理      String response_data = prev.getResponseDataAsString();       JSONObject parseObject = JSON.parseObject(response_data);       log.info("====********************************************************************"+ parseObject);       String data = parseObject.getString("data");       //這是加密的數據處理       if (data != null) {            log.info("====PostProcessor********************************************************************"+ data);                //解密               String reqDencryptJSON = AESUtis.appAESDencrypt(data, deviceId,secretKey );               log.info("===PostProcessor**********************************responseBody*****************************"+ reqDencryptJSON);                     //解密的數據寫回返回body中            prev.setResponseData(reqDencryptJSON.getBytes("UTF-8"));              //取用戶屬性保存,以便以后用到            JSONObject  resultJson= JSON.parseObject(reqDencryptJSON);                JSONObject result = resultJson.getJSONObject("result");                 if (result != null) {                     log.info("===PostProcessor*********************************result *******===************" );                    String accessKey = result.getString("accessKey");                                if (accessKey != null) {                          String accountId = result.getString("accountId");                          String token = result.getString("token");                   //配置.設置頭信息和公共信息                                           String sign =  MD5Utils.md5To32LowerCaseHexString( secretKey + accountId+ deviceId + secretKey);                    //文件讀取放到這里, 文件內容會被重寫,而不是追加模式,所以不能實際保存內容的地方申明FileOutputStream                     Properties properties = new Properties();                            FileOutputStream outputStream = new FileOutputStream(fileName);                             properties.setProperty("accountId",accountId);                     properties.setProperty("accessKey",accessKey);                      properties.setProperty("sign",sign);                      properties.setProperty("token",token);                      properties.store(outputStream, "");//                      log.info("===PostProcessor**********************************properties.store*******===************" );                       //資源釋放                                  if (outputStream != null) {                            outputStream.close();                    }                                        }              }        }       } catch (Exception ex) {            log.info("Script execution failed================PostProcessor=========================", ex);}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 建平县| 湖口县| 商城县| 高邮市| 黔东| 桓仁| 武陟县| 东港市| 邹城市| 砀山县| 建始县| 额敏县| 抚顺市| 庆云县| 房产| 乐都县| 祁连县| 高州市| 德安县| 天水市| 北川| 比如县| 灯塔市| 山东省| 江口县| 昌平区| 绥中县| 绥化市| 开封市| 惠东县| 鹤壁市| 义乌市| 宁海县| 伊金霍洛旗| 泗水县| 汾西县| 桃江县| 宕昌县| 奈曼旗| 普兰店市| 中山市|