Jmeter扩展组件开发(7) - 自定义java请求的开发
CODE
package com.demo;
import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerClient;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
import org.apache.jmeter.samplers.SampleResult;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
public class Second implements JavaSamplerClient {
//URLNAME 就是在图形化界面当中显示的变量名称
private static final String URLNAME = "URL";
//设置界面当中默认显示的变量的值
private static final String DEFAULTURL = "http://www.baidu.com";
/*
* 这个方法决定了在jmeter当中显示哪些属性
* @return arguments
*/
public Arguments getDefaultParameters() {
System.out.println("getDefaultParameters run");
Arguments arguments = new Arguments();
arguments.addArgument(URLNAME,DEFAULTURL);
return arguments;
}
/*
* 这个方法就是一个初始化方法,我们所有的初始化的动作都可以在这里写
* @param javaSamplerContext
*/
//用户输入的url
private String inputUrl;
public void setupTest(JavaSamplerContext javaSamplerContext) {
inputUrl = javaSamplerContext.getParameter(URLNAME,DEFAULTURL);
System.out.println("setupTest run");
System.out.println("用户输入的url地址是:" + inputUrl);
}
//用来存储响应数据,目的是将响应结果放到查看结果树当中
private String resultData;
/*
* 这个方法就是实现你具体功能逻辑的方法
* @param javaSamplerContext
* @return
*/
public SampleResult runTest(JavaSamplerContext javaSamplerContext) {
SampleResult result = new SampleResult(); //SampleResult()类是负责把数据打到查看结果树上
System.out.println("runTest run");
StringBuffer sb = new StringBuffer();//定义一个StringBuffer sb
try {
URL url = new URL(inputUrl); //引用url类,传入用户输入的url @param inputUrl
URLConnection conn = url.openConnection(); //访问打开url(inputUrl)
byte[] buffer = new byte[1024];//声明一个byte[]类型的数组,长度为1024
int len;//定义一个int型 len长度
result.sampleStart();//事务,标记事务的开始(有了事务,就可以统计时间、流量以及其他参数,知道请求具体情况)
InputStream in = conn.getInputStream();//定义一个输入流
//len=in.read(buffer)) 读取响应的数据流放到buffer变量,赋值给长度len,len !=1 表示数据读取完了
while ((len=in.read(buffer)) != -1){
resultData = new String(buffer,"utf-8"); //响应的数据流buffer,赋值给响应数据变量resultData,字符编码格式为UTF-8
sb.append(resultData);//读取的长度是1024,有可能一次读不完,读取多次,放到sb中显示完整的响应数据
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
// resultData = "这就是响应结果";
resultData = sb.toString();//sb数据以string类型类型返回给resultData
result.setSampleLabel("查看结果树请求名称代码写死了,外面无法更改"); //自定义查看结果树请求名称
result.setSuccessful(true); //告诉查看结果树true就访问是否成功,可自行进行参数化传参判断
result.setResponseData(resultData,null); //resultData放到result中,编码格式为null
result.setDataType(SampleResult.TEXT); //结果是一个text数据类型
return result;
}
public void teardownTest(JavaSamplerContext javaSamplerContext) {
System.out.println("teardownTest run");
}
}
Step
敲代码打包放到Jmeter目录Jmeter重启校验一个get请求OK了

Jmeter扩展组件开发(7) - 自定义java请求的开发的更多相关文章
- Jmeter自定义Java请求,继承AbstractJavaSamplerClient
首先,使用Eclipse新建一个项目,然后从Jmeter的lib/ext目录下中拷贝ApacheJMeter_java.jar和ApacheJMeter_core.jar两个文件,然后引入这两个JAR ...
- Java开发知识之Java的集成开发环境
Java开发知识之Java的集成开发环境 一丶Eclipse 开发环境 Eclipse是IBM公司花了4000万美金开发的一个集成开发环境.是一个免费开源的. 下载官网: http://www.ecl ...
- Jmeter自定义Java请求开发
一.本次实验目的 IDEA新建maven项目,使用java开发自定义jmeter的请求. 本次开发使用的代码,会百度云分享给大家. 二.本次实验环境 Idea 2017.02 Jmeter 5.1.1 ...
- Jmeter扩展组件开发(2) - 扩展开发第一个demo的实现
maven工程src目录介绍 main:写代码 main/java:写Java代码 main/resources:写配置文件 test:写测试代码 test/java demo实现 创建Package ...
- Jmeter扩展组件开发(1) - 创建maven工程
前言 没有安装IDEA的伙伴先安装.url:https://www.cnblogs.com/gltou/p/14956060.html 扩展开发实现的两种方式 继承AbstracJavaSampler ...
- jmeter之自定义java请求性能测试
一.环境准备 1.新建一个java工程 2.导入jar包:ApacheJMeter_core.jar ApacheJMeter_java.jar ...
- Jmeter扩展组件开发(3) - 实现方法
继承JavaSamplerClient,四种实现方法讲解 前提 JavaSamplerClient要把四种实现方法都继承,编译器才不会报错. com.demo(package包)右键新建一个secon ...
- JMeter扩展插件实现对自定义协议进行支持 转
本文版权归xmeter.net 所有.欢迎转载,转载请注明出处. 摘要## JMeter本身提供了插件机制,允许第三方扩展JMeter以支持JMeter不支持的协议的测试.本文以扩展一个简单的Apac ...
- Jmeter扩展组件开发(10) - 自定义扩展函数助手的开发
CODE package com.functions;import org.apache.jmeter.engine.util.CompoundVariable;import org.apache.j ...
随机推荐
- java基础技术集合面试【笔记】
java基础技术集合面试[笔记] Hashmap: 基于哈希表的 Map 接口的实现,此实现提供所有可选的映射操作,并允许使用 null 值和 null 键(除了不同步和允许使用 null 之外,Ha ...
- python-scrapy框架学习
Scrapy框架 Scrapy安装 正常安装会报错,主要是两个原因 0x01 升级pip3包 python -m pip install -U pip 0x02 手动安装依赖 需要手动安装 wheel ...
- SQL 练习26
查询 1990 年出生的学生名单 --方式1 SELECT * FROM Student WHERE Sage BETWEEN '1990-01-01' AND '1990-12-31' --方式2 ...
- 题解—P2218 [HAOI2007]覆盖问题
一道不错的题,主要就是一个思路点,想到就行了,想不到就一直卡着. 看完题解之后发现挺简单,实际上自己挣扎半天也咩有想到. 一开始想类比成一维之后贪心,后来被同机房大佬 \(hack\) 掉了. sol ...
- C# 如何在编译时将 dll 复制到 bin\Release 目录下
下面假设 Project 名为 Gamma4RTD,需要调用的 dll 文件为 rtddll.dll.IDE 是 Visual Studio 2015 打开 Visual Studio 2015 -& ...
- C++多态中虚函数表合并与继承问题
多态: C++的多态是通过一张虚函数表(Virtual Table)来实现的,简称为 V-Table.在这个表中,主要是一个类的虚函数的地址表,这张表解决了继承.覆写的问题,保证其真实反应实际的函数. ...
- 天翼云安装jdk(注意有坑)
1.下载jdk8 查看Linux位数,到oracle官网下载对应的jdk ① sudo uname --m 确认32位还是64位 ② https://www.oracle.com/technetwo ...
- css - rem和vw
css - rem和vw 物理像素 物理像素在不同的设备中1px里可以容纳的像素颗粒是不相同的,所以1px这个单位其实也是有N个像素颗粒填充的.同一尺寸屏幕的每个像素点所能容纳的像素颗粒越多显示效果越 ...
- ProjectEuler 007题
题目:By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can see that the 6th prime is ...
- 删除mysql数据库后django重建数据库
问题:由于表的结构设计的不太合理,后来要添加列,但是在django中使用makemigrations一直失败. 解决:索性就把mysql中对于django的数据库删了(其实也不用删除),在django ...