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请求的开发的更多相关文章

  1. Jmeter自定义Java请求,继承AbstractJavaSamplerClient

    首先,使用Eclipse新建一个项目,然后从Jmeter的lib/ext目录下中拷贝ApacheJMeter_java.jar和ApacheJMeter_core.jar两个文件,然后引入这两个JAR ...

  2. Java开发知识之Java的集成开发环境

    Java开发知识之Java的集成开发环境 一丶Eclipse 开发环境 Eclipse是IBM公司花了4000万美金开发的一个集成开发环境.是一个免费开源的. 下载官网: http://www.ecl ...

  3. Jmeter自定义Java请求开发

    一.本次实验目的 IDEA新建maven项目,使用java开发自定义jmeter的请求. 本次开发使用的代码,会百度云分享给大家. 二.本次实验环境 Idea 2017.02 Jmeter 5.1.1 ...

  4. Jmeter扩展组件开发(2) - 扩展开发第一个demo的实现

    maven工程src目录介绍 main:写代码 main/java:写Java代码 main/resources:写配置文件 test:写测试代码 test/java demo实现 创建Package ...

  5. Jmeter扩展组件开发(1) - 创建maven工程

    前言 没有安装IDEA的伙伴先安装.url:https://www.cnblogs.com/gltou/p/14956060.html 扩展开发实现的两种方式 继承AbstracJavaSampler ...

  6. jmeter之自定义java请求性能测试

    一.环境准备         1.新建一个java工程         2.导入jar包:ApacheJMeter_core.jar     ApacheJMeter_java.jar         ...

  7. Jmeter扩展组件开发(3) - 实现方法

    继承JavaSamplerClient,四种实现方法讲解 前提 JavaSamplerClient要把四种实现方法都继承,编译器才不会报错. com.demo(package包)右键新建一个secon ...

  8. JMeter扩展插件实现对自定义协议进行支持 转

    本文版权归xmeter.net 所有.欢迎转载,转载请注明出处. 摘要## JMeter本身提供了插件机制,允许第三方扩展JMeter以支持JMeter不支持的协议的测试.本文以扩展一个简单的Apac ...

  9. Jmeter扩展组件开发(10) - 自定义扩展函数助手的开发

    CODE package com.functions;import org.apache.jmeter.engine.util.CompoundVariable;import org.apache.j ...

随机推荐

  1. Spring Boot 项目集成Redis

    目录 集成方式 使用Jedis 使用spring-data-redis Redis的安装 绑定配置 获取Redis客户端 Redis工具的编写 使用 集成方式 使用Jedis Jedis是Redis官 ...

  2. STM32—DAC配置

    文章目录 一.DAC介绍 二.主要寄存器说明 三.代码及配置 一.DAC介绍 ADC是模数转换器,可以将模拟电压转换位数字信号:DAC是数模转换器,可以将数字信号转换为模拟电压. STM32F103Z ...

  3. 题解 Cover

    传送门 考场上坚持认为树上背包可以有70pts,于是爆零了 首先我以为是树上背包的部分分其实是树形DP 然后极其魔鬼的正解: 首先我们令 \(dp[i][j]\) 为以i为根的子树覆盖次数至多为j时的 ...

  4. C#设计模式---迭代器模式(Iterator Pattern)

    一.目的 提供一种方法访问一个容器对象中各个元素,而又不需暴露该对象的内部细节. 二.定义 迭代器模式提供了一种方法访问一个聚合对象(理解为集合对象)中各个元素,而又无需暴露该对象的内部表示,这样既可 ...

  5. [SWMM]出现问题及解决

    1,节点顺序 [错误]:如下图,在SWMM软件中普通节点到出水口的连接线不能正常连接,提示找不到出水口节点,但在inp文件中是存在的! [解决]:需要先写入点节点再写入线节点,即先写入[JUNCTIO ...

  6. ES6 class——音乐播放器实例

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  7. 使用栅格系统开发响应式页面——logo+nav实例

    小屏时: 中屏及以上时: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...

  8. 三大操作系统对比使用之·MacOSX

    时间:2018-11-13 整理:byzqy 本篇是一篇个人对Mac系统使用习惯和应用推荐的分享,在此记录,以便后续使用查询! 打开终端: command+空格,调出"聚焦搜索(Spotli ...

  9. jQuery mobile网格布局

    3.4 内容格式化 jQuery Mobile中提供了许多非常有用的工具与组件,如多列的网格布局.折叠形的面板控制等,这些组件可以帮助开发者快速实现正文区域内容的格式化. 3.4.1 网格布局 jQu ...

  10. Python面试题小试牛刀

    1.声明变量注意事项有那些? 1.变量名只能用字母.数字或下划线的任意组合 2.变量名不能以数字为第一个字符 3.内置函数名不能用 2.如何查看变量在内存中的地址? id(变量名) 3.写代码 a. ...