自动化测试或者性能测试过程中,经常遇到业务数据被加密等需求,面对这样需求可以通过BeanShell 和Java Sampler等方式解决 。无论哪种方式均需多次代码编写。同时bean shell脚本语言不适用于性能测试,因为效率低资源占用高。

为了减少代码编写时间和照顾部分代码能力较差的测试人员,我们可以把代码处理部分封装到JMeter HttpSampler中,减少代码处理时间,甚至无代码编写。

一、JMeter源码追踪

Http Sampler 实现方式有httpclient4 和Java(HttpURLConnection)两种方式,此处选择修改Java方式的http sampler,并选择修改POST请求类型。

JMeter官网下载源码,并导入IDE工具,编译成功后,打开src/protocol/http/sampler目录

http sampler

1、首先阅读HTTPJavaImpl类中sampler()方法,定义了Java方式的HttpSampler。

HTTPJavaImpl  sampler 方法

2、postbody消息获取是通过sendPostData()方法。阅读代码526行定义请求消息内容。if(method.equals(HTTPConstants.POST)) {

String postBody = sendPostData(conn);

System.out.println("527====>"+postBody);

res.setQueryString(postBody);

postbody

3、追踪代码sendPostData()方法

sendPostData

4、进一步追踪代码,postbody内容由PostWriter类的sendPostData()方法完成。

PostWriter sendPostData()

阅读sendPostData()代码,postbody请求内容由files、parmas两种方式完成,由于我们使用params,故定位到如下代码。二进制数据流formDataUrlEncoded为请求内容。

formDataUrlEncoded 写入postbody

4、继续追踪代码,探究formDataUrlEncoded二进制数据如何写入。数据竟然是在sendHeader方法内完成写入。

sendHeader()

由于我们使用params方式完成请求数入,继续追踪代码,找到关键信息。formDataUrlEncoded数据由sendhead方法的postbody传递得到。

formDataUrlEncoded传递获得

请求参数方式为params,继续追踪postbody内容赋值,在sendhead方法292行处找到最终代码。此处我们把请求内容修改,打印日志验证结论是否正确。

getQueryString

二、JMeter源码验证

1、保存代码后,重新编译打包,然后运行。注意此处在JMeter源码调试模式完成。首先我们创建一个HTTP Java Sampler ,选择Java Client 方式。

Java Client

post请求并设置参数

2、运行脚本,察看结果书,发现请求内容已经被二次处理,test2的值已经变成222211111111111111111,原因是因为上面代码中我们已经增加部分内容。postBody = sampler.getQueryString(contentEncoding);

postBody=postBody+"11111111111111111";

System.out.println("292====>"+postBody);

结果

三、扩展

至此我们已经验证结果,也找到了代码修改关键点,我们可以根据自己需要完成扩展。扩展完成后重新编译打包,然后拷贝工程lib/ext中ApacheJMeter_http.jar 文件至JMeter工具的lib/ext目录覆盖即可。

ApacheJMeter_http.jar

hppt加密 java代码_Http Sampler扩展(加密处理)相关推荐

  1. php md5加密 java代码_Java实现MD5加密及解密的代码实例分享

    基础:MessageDigest类的使用 其实要在Java中完成MD5加密,MessageDigest类大部分都帮你实现好了,几行代码足矣:/** * 对字符串md5加密 * * @param str ...

  2. [转]DES加密 java与.net可以相互加密解密两种方法

    [转]原文地址:http://jumpman.javaeye.com/blog/605996 DES加密 java与.net可以相互加密解密两种方法 文章分类:Java编程 通过这个方法可以实现jav ...

  3. 非对称性密钥加密 java 实例_JAVA实现非对称加密

    高级加密算法 双保险 公钥.私钥 DH(Diffie-Hellman)密钥交换算法 RSA - 基于因子分解 ElGamal - 基于离散对数 ECC(Elliptical Curve Cryptog ...

  4. des加密解密 代码 java_java 实现DES 加密解密的示例

    package com.cn.peitest; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.cryp ...

  5. java 代码混淆 class字符串加密 jar包war包加密 支持JDK16

    1.功能介绍 Java文件是目前最流行的开发语言,因采用对象模式很容易进行整合复用大规模项目开发.但是目前因反编译严重,各行业由java开发的系统很容易本反编译,模仿借鉴,核心代码很容易被盗用. 特别 ...

  6. md5视频加密 java代码,Java实现MD5加密及解密的代码实例分享

    基础:MessageDigest类的使用 其实要在Java中完成MD5加密,MessageDigest类大部分都帮你实现好了,几行代码足矣: /** * 对字符串md5加密 * * @param st ...

  7. Java代码实现DES算法加密解密功能

    一.概述 DES加密算法是一种对称加密,所谓对称加密就是加密和解密都是用同一把密钥. 二.详细代码 import javax.crypto.BadPaddingException; import ja ...

  8. java socket 加密,Java socket通信实现DES加密与解密

    DES是对称加密算法的其中一个,用一个密钥进行加密解密数据,安全性能比较低,效率较高,一些不太重要的数据可以使用DES加密算法进行加密解密传输,其他的3DES与AES用法类似. 流程图 首先认真看一下 ...

  9. md5加密 java原理_md5 32位 加密原理 Java实现md5加密

    md5 32位 加密原理 简单概括起来,MD5 算法的过程分为四步:处理原文,设置初始值,循环加工,拼接结果. 第一步:处理原文 首先,我们计算出原文长度(bit)对 512 求余的结果,如果不等于 ...

最新文章

  1. mysql练习题及答案_MySQL经典练习题及答案,常用SQL语句练习50题
  2. 机器学习面试题集-图解准确率,精确率,召回率
  3. Oracle 共享磁盘阵列 双机热备 实战 配置教程 配置手册
  4. 应用于服务供应商网络的IP+光纤业务实现解决方案
  5. 百度前端学院---斌斌学院---任务demo---1
  6. Leetcode 138. 复制带随机指针的链表 解题思路及C++实现
  7. SpringBoot项目新建之后修改编译版本
  8. 使用Repository informaton system查找constant定义
  9. 为什么你的年薪只是别人的月薪?你需要技术专家帮你「充电」
  10. Internal Error 2738 - Installing ArcGIS Server 9.3,10 for Java
  11. werkzeug serving.run_simple
  12. Arquillian和Jboss的版本问题
  13. python爬取豆瓣书籍_python爬取豆瓣书籍排行
  14. 如何使用PAUP4、MrBayes、TNT构建系统发育树
  15. 单应性变换 Homography Estimation
  16. WSJ在隐私是否真的那么可怕
  17. 计算机用户禁用更改登记,注册表被禁用的解法.doc
  18. 【抽象代数】环、子环、理想、商环、环的同态
  19. dxo photolab mac 破解版永久激活方法
  20. android 屏幕投射功能,安卓手机怎么投射屏幕?

热门文章

  1. macunity日志目录_Mac升级10.13需谨慎,Unity不显示资源的解决办法
  2. 千万别小瞧九宫格 一道题就能让候选人原形毕露!
  3. Linux内核TC工具链路带宽设计--无类队列规定
  4. 【智能商务】学习财务分析,看这10张思维导图就够啦
  5. Nginx之——负载均衡、限流、缓存、黑名单和灰度发布
  6. 【仿真建模】第一课:AnyLogic入门基础教程 - 行人库入门讲解
  7. 更愿意思念更早的“金陵”
  8. Proteus仿真STM32F103R6输出正弦波
  9. PD api基础框架源码分析
  10. 厦门大学354汉语基础考研参考书目