图片转码 base64

致谢参考博客:

https://www.cnblogs.com/qiaoyeye/p/7218770.html

https://www.cnblogs.com/lasdaybg/p/9803988.html

https://www.cnblogs.com/jyiqing/p/10256178.html

http://www.manongjc.com/article/59838.html

一、环境

jmeter5.2.1

jdk1.8

eclipse

二、具体步骤(总体是参考的第一条博客)

  1、打开eclipse建立maven工程

  

  2、修改  pom.xml  文件

  修改完  pom.xml  文件后,等一会儿(正在下载  jmeter  的相关东西)

    <!-- https://mvnrepository.com/artifact/org.apache.jmeter/ApacheJMeter_core -->
<dependency>
<groupId>org.apache.jmeter</groupId>
<artifactId>ApacheJMeter_core</artifactId>
<version>5.2.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.jmeter/ApacheJMeter_functions -->
<dependency>
<groupId>org.apache.jmeter</groupId>
<artifactId>ApacheJMeter_functions</artifactId>
<version>5.2.1</version>
</dependency>

  3、新建  com.mytest.functions  包

  4、新建  MyBase64  类(jmeter 函数名为  __Base64Img)

  我这里和原作者不同,用的是  java.util.Base64  的包(具体原因看第二第三条博客)

  base64 码报错,看第四条博客

package com.mytest.functions;

import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List; import org.apache.jmeter.engine.util.CompoundVariable;
import org.apache.jmeter.functions.AbstractFunction;
import org.apache.jmeter.functions.InvalidVariableException;
import org.apache.jmeter.samplers.SampleResult;
import org.apache.jmeter.samplers.Sampler;
import org.apache.jmeter.threads.JMeterVariables; import java.util.Base64; public class MyBase64 extends AbstractFunction{ //自定义function的描述
private static final List<String> desc = new LinkedList<String>();
static {
desc.add("图片路径");
}
static {
desc.add("图片base64后存放变量");
}
private static final String KEY = "__Base64Img"; //存放传入参数的值的变量
private Object[] values; //描述参数
public List<String> getArgumentDesc() {
// TODO Auto-generated method stub
return desc;
} @Override
//函数的执行
public synchronized String execute(SampleResult arg0, Sampler arg1) throws InvalidVariableException {
// TODO Auto-generated method stub
JMeterVariables localJMeterVariables = getVariables();
String str1 = ((CompoundVariable)this.values[0]).execute(); String str2 = getImgBase64(str1); if ((localJMeterVariables != null) && (this.values.length > 1)) {
String str3 = ((CompoundVariable)this.values[1]).execute().trim();
localJMeterVariables.put(str3, str2);
} return str2;
} @Override
public String getReferenceKey() {
// TODO Auto-generated method stub
//提供jmeter函数助手显示的名称
return KEY;
} @Override
public synchronized void setParameters(Collection<CompoundVariable> arg0) throws InvalidVariableException {
// TODO Auto-generated method stub
//检查参数的个数,支持的方法有2个,具体用法参加api:
/**
* protected void checkParameterCount(Collection<CompoundVariable> parameters,
int count)
throws InvalidVariableException
Utility method to check parameter counts.
Parameters:
parameters - collection of parameters
count - number of parameters expected
* */
//-----------------
/**
*
* protected void checkParameterCount(Collection<CompoundVariable> parameters,
int min,
int max)
throws InvalidVariableException
Utility method to check parameter counts.
Parameters:
parameters - collection of parameters
min - minimum number of parameters allowed
max - maximum number of parameters allowed
* */
//checkParameterCount(arg0, 1);
checkParameterCount(arg0, 1, 2);
//将参数值存入变量中
this.values = arg0.toArray(); }
public String getImgBase64(String filePath) {
InputStream in = null;
byte[] data = null;
String result = null;
try {
in = new FileInputStream(filePath);
data = new byte[in.available()];
in.read(data);
in.close(); // BASE64Encoder encoder = new BASE64Encoder();
// result = encoder.encode(data);
result = Base64.getEncoder().encodeToString(data); } catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} return result;
} }

  5、把  MyBase64  类导出为  jar  包至  apache-jmeter-5.2.1\lib\ext  目录下

  

   

  6、打开 jmeter5.2.1  去试一试 函数能不能用

  

  

  7、注意事项

    有些接口可能需要  “data:img/jpg;base64,”  这种前缀部分添加上去才能正确读取  Base64  编码

    那就在  jmeter  参数填写的时候添加上  “data:img/jpg;base64, ”  这种前缀

     

好,完成。

jmeter接口测试 -- Base64加密(函数助手添加自定义函数)的更多相关文章

  1. Jmeter编写Base64加密函数

    方法一: 使用Beanshell Sampler.BSF Sampler等实现,现已Base64加密为例,脚本如下: import sun.misc.BASE64Decoder; String res ...

  2. Jmeter接口测试-MD5加密-请求验签(完整流程)

    第一部分:先准备好Jmeter 1.在开始编写脚本之前,先要确保你的Jmeter能够正常运行.若你还没有安装Jmeter,可参考以下方法: A.Jmeter需要java运行环境,所以需要下载JDK,J ...

  3. Jmeter 接口测试之MD5加密函数(函数助手篇)

    转自:https://blog.csdn.net/hhyangel372/article/details/81571058 本文给大家介绍一下如何使用Jmeter自带的函数对常量和变量进行简单的加密处 ...

  4. jmeter接口测试实例6-注册(参数化)

    Jmeter实例6:注册(参数化) 选中http协议,添加CSV Data set Config 准备参数中要使用到的值,存放到txt中,如果一个里面有多个参数,中间用,号分隔: 选中CSV元件,fi ...

  5. Jmeter函数助手中添加自定义函数

    最近,群里的牛肉面大神有个需求,是将每个post请求的body部分做一个加密操作,其实这个需求不算难,用beanshell引入加密函数的包,然后调用就行了.只是,如果请求多了,每次都要调用一下自己加密 ...

  6. JMeter-Eclipse添加自定义函数 MD5加密 32位和16位

    最近公司的接口都是MD5  16位加密,所以要使用加密功能. 之前也做过加密,因为用的比较少,所以是写了一个加密方法,导出JAR包,调用的.用起来需要很多设置,并且换算效率也不高.听前同事说,jmet ...

  7. jmeter主要函数助手功用说明

    jmeter中虽然有很多的插件,但是有些需要安装,有些具有一定的局限性.函数助手是一个快捷的工具库.下面记录一下函数助手中一些主要的函数的使用方法. 注:不内容中所有的实例均基于3.2记录 1._Be ...

  8. 关于使用jmeter函数助手生成随机数的使用方法

    记录自己的生活!   1.使用jmeter函数助手的生成随机数的方法,主要包含以下几个函数:     [_Random]     [_RandomString]   2.关于[_Random]函数的说 ...

  9. <转>jmeter(十五)函数助手

    jmeter作为一个开源的性能测试工具,作用还是蛮强大的,找到一篇对jmeter中函数助手解释蛮详细的一篇博客,感觉不错,转载过来,希望对大家有所帮助. 由于时间和版本问题,其中有些内容和排版我做了修 ...

随机推荐

  1. PHP字符串函数总结

    字符串函数 addcslashes — 为字符串里面的部分字符添加反斜线转义字符 addslashes — 用指定的方式对字符串里面的字符进行转义 bin2hex — 将二进制数据转换成十六进制表示 ...

  2. tkinter的控件

    包含如下控件: Button  按钮控件 Canvas 画布控件,显示图形元素如线程或文本 Checkbutton 多选框控件,用于在程序中提供多项选择框 Entry 单行输入控件,用于显示简单的文本 ...

  3. CentOS 的命令链接符“;”

    ";" 用于在一行中输入多个命令,执行顺序=输入顺序. For instance: $ ls -a;cd Music

  4. 数据库基础01-SQL基础语法

    数据库查询语言(Structured Query Language) 数据库查询语言: DDL(data definition language) -数据定义语言,建库建表 DML (data man ...

  5. redis zset底层实现原理

    一.Zset编码的选择 1.有序集合对象的编码可以是ziplist或者skiplist.同时满足以下条件时使用ziplist编码: 元素数量小于128个 所有member的长度都小于64字节 其他: ...

  6. day18 装饰器(下)+迭代器+生成器

    目录 一.有参装饰器 1 前提 2 如何使用有参装饰器 3 有参装饰器模板 4 修正装饰器 二.迭代器 1 什么是迭代器 2 为什么要有迭代器 3 如何用迭代器 3.1 可迭代对象 3.2 可迭代对象 ...

  7. 某cms代码审计

    前言   前几个礼拜上课老师带着挖cms的洞,挖出个cookie反序列化注入漏洞,和报错注入并且提交了cnvd.昨天去找源码的时候发现它更新了一个版本,更新日志上也没说修复,就想着看看漏洞还存不存在, ...

  8. 每天一点python:正则表达式中的findall方法

    举例:使用findall获取所有匹配的正则表达式文本,然后逐一替换. #! python3 """ A regular expression example: find ...

  9. 数据可视化之powerBI技巧(二)Power BI性能分析器,原来还有这个功能

    ​性能分析器是Power BI前几个月推出的功能,主要用于检测视觉对象和DAX的性能如何,该功能的使用比较简单,首先勾选这个功能, 然后点击开始记录并刷新视觉对象,就可以看出每个元素耗费的时间,如下图 ...

  10. ShaderLab-坐标转换

    观察空间就是相机的空间 投影矩阵本质就是对x.y.z分量进行不同程度的缩放(z还做了平移),结果就是视锥体近切面远切面变成正方形.视锥体的中心在(0,0). (对于正交相机,这一步已经得到了立方体) ...