JMeter 初体验/Java 网络请求脚本添加

Jmeter  简易使用(网上有很多图片,教程,此处 只是简单 描述一下):

Jmeter   软件使用,首先 创建一个  测试计划,在该 测试计划上右键  添加- ->Threads(Users) -->  线程组

然后在 线程组上 右键--> 添加-->Sampler-->Http 请求 。

在 Http 请求中配置 响应的信息,保存即可

然后需要创建响应的  结果树,创建步骤:(在 该 线程组上 右键,添加 -->监听器-->查看结果树 )

可根据个人需求,自行添加 监听器。

Jmeter JAVA 脚本 使用 01:

使用 个人自定义的java脚本进行  测试。

  1. 首先需要在  Jmeter 的  lib/ext  包中拷贝

ApacheJMeter_core.jar

ApacheJMeter_java.jar

这两个包 到 java项目中。

2.创建测试类入口  implements  AbstractJavaSamplerClient ,重写其内部的 方法即可。

  1. 将该项目打成jar包,(若有 其他jar包的引用,需要  将这些jar 包 存放到 lib 文件夹下,否则 会出现 某些 class not found 的 异常)
  2. 此处需要注意的是,若 有网络请求发生的时候,在Jmeter 默认lib 中存在 commons-apache-httpclient 3.x 版本的 网络请求包,此处可以考虑替换掉该包 或者  使用该包 ,否则 请求网络时会出现异常。
  3. 导出 jar包后,可将  该 jar包放置到  lib/ext  包下。
  4. 在  Jmeter 中 创建 线程组后,创建一个 Java 请求 ,如果路径放置正确的话,会  出现 你设定的 测试类。创建好相应的 结果查看树之类 的监听器后,即可监听。

此处贴出 Java 请求 类以供参考:

 1 import java.io.ByteArrayOutputStream;
 2 import java.io.IOException;
 3 import java.io.InputStream;
 4 import java.io.UnsupportedEncodingException;
 5 import java.net.URI;
 6 import java.net.URISyntaxException;
 7 import java.util.Arrays;
 8 import java.util.HashMap;
 9 import java.util.List;
10
11 import org.apache.commons.httpclient.HttpClient;
12 import org.apache.commons.httpclient.HttpConstants;
13 import org.apache.commons.httpclient.HttpException;
14 import org.apache.commons.httpclient.NameValuePair;
15 import org.apache.commons.httpclient.methods.PostMethod;
16 import org.apache.jmeter.config.Argument;
17 import org.apache.jmeter.config.Arguments;
18 import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
19 import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
20 import org.apache.jmeter.samplers.SampleResult;
21
22 import com.leo.utils.Constants;
23 import com.leo.utils.HttpBase;
24
25 @SuppressWarnings({ "deprecation", "unused" })
26 public class TestLogin extends AbstractJavaSamplerClient {
27
28     public SampleResult runTest(JavaSamplerContext arg0) {
29         SampleResult result = new SampleResult();
30         HashMap<String, Object> hashMap = new HashMap<>();
31         hashMap.put("size", "10");
32         result.sampleStart();
33         result.setRequestHeaders(hashMap.toString());
34         result.setDataEncoding("UTF-8");
35         HttpClient client = new HttpClient();
36         PostMethod postMethod = null;
37         postMethod = new HttpBase(true, false).createJson_hm(
38                 Constants.HOME_GOODS_URL, hashMap);
39         String body = null;
40         postMethod.addRequestHeader("Content-Type", "application/json");
41         for (int i = 0; i < postMethod.getParameters().length; i++) {
42             NameValuePair pair = postMethod.getParameters()[i];
43             result.setRequestHeaders(pair.getName() + "::" + pair.getValue());
44         }
45         try {
46             int statusCode = client.executeMethod(postMethod);
47             if (statusCode == 200) {
48                 InputStream in = postMethod.getResponseBodyAsStream();
49                 body = ToString(in);
50                 result.setSuccessful(true);
51                 result.setResponseData(body);
52             } else {
53                 result.setSuccessful(false);
54                 result.sampleEnd();
55             }
56         } catch (HttpException e) {
57             e.printStackTrace();
58         } catch (IOException e) {
59             e.printStackTrace();
60         }
61         result.setResponseMessage(body);
62         result.setSuccessful(true);
63         result.sampleEnd();
64         return result;
65     }
66
67     private String ToString(InputStream in) throws IOException {
68         // TODO Auto-generated method stub
69         ByteArrayOutputStream outStream = new ByteArrayOutputStream();
70         byte[] data = new byte[128];
71         int count = -1;
72         while ((count = in.read(data, 0, 128)) != -1)
73             outStream.write(data, 0, count);
74
75         data = null;
76         return new String(outStream.toByteArray());
77     }
78
79     @Override
80     public void setupTest(JavaSamplerContext context) {
81         super.setupTest(context);
82         Arguments arguments= getDefaultParameters();
83
84
85     }
86
87     @Override
88     public void teardownTest(JavaSamplerContext context) {
89         // TODO Auto-generated method stub
90         super.teardownTest(context);
91
92     }
93 }

其中 的SampleResult  可用来打印显示 信息: 譬如:

所以 需要  对 SampleResult 中 的 信息进行设定。

时间: 2024-08-10 15:00:27

JMeter 初体验/Java 网络请求脚本添加的相关文章

Java网络请求getInputStream异常

今天调试网络请求部分时,当getInputStream失败时直接抛出异常.解决方法时在getInputStream之前获取ResponseCode if( connection.getResponseCode() != HttpURLConnection.HTTP_OK) return null;

Java网络请求

HttpURLConnection是java提供的用于网络访问的类.Android网络访问点击打开链接 get请求方式(实现从服务器下载相应文件的功能): public class HttpURLGET { //HttpURLConnection类获取服务器一张图片 public static void main(String[] args) { // TODO Auto-generated method stub try { URL url = new URL("http://localhos

Java网络请求工具类(依赖:org.apache.http;注:HttpClient 4.4,HttpCore 4.4)

到此处可以去下载依赖包:http://hc.apache.org/downloads.cgi 1 import java.util.List; 2 3 import org.apache.http.HttpStatus; 4 import org.apache.http.NameValuePair; 5 import org.apache.http.client.config.RequestConfig; 6 import org.apache.http.client.entity.UrlEnc

java 网络请求

String ret = null; try { URL url = new URL(requrl); HttpURLConnection httpConn = (HttpURLConnection) url.openConnection(); httpConn.setConnectTimeout(30000); httpConn.setReadTimeout(30000); httpConn.setDoOutput(true); httpConn.setDoInput(true); httpC

(转载)Android之三种网络请求解析数据(最佳案例)

[置顶] Android之三种网络请求解析数据(最佳案例) 2016-07-25 18:02 4725人阅读 评论(0) 收藏 举报  分类: Gson.Gson解析(1)  版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 小武:相信大家都用过网络请求解析数据,只是方法不一样而已,但是,逻辑都是差不多的: 一:AsyncTask解析数据 AsyncTask主要用来更新UI线程,比较耗时的操作可以在AsyncTask中使用. AsyncTask是个抽象类,使用时需要继承这个

Android网络请求心路历程

HTTP请求&响应 既然说从入门级开始就说说Http请求包的结构.一次请求就是向目标服务器发送一串文本.什么样的文本?有下面结构的文本.HTTP请求包结构 例子: 1 2 3 4 5 6 7     POST /meme.php/home/user/login HTTP/1.1     Host: 114.215.86.90     Cache-Control: no-cache     Postman-Token: bd243d6b-da03-902f-0a2c-8e9377f6f6ed   

GCD-两个网络请求同步问题

在网络请求的时候有时有这种需求 两个接口请求数据,然后我们才能做最后的数据处理.但是因为网络请求是移步的 .我们并不知道什么时候两个请求完成 . 通常面对这样的需求会自然的想到 多线程 啊 .表现真正的技术的时刻来啦,可以使用 group 队列啊 .等队列中的请求任务都完成 ,在通知主线程处理汇总数据嘛 . 今天我也是这么写的,但是发现主线程并没有等到队列中的分线程网络请求bock回调就返回了 .我给block回调之前打印,确实是队列中的任务都打印之后,才返回的主线程 .那么问题在哪里 ? 网络

Shell脚本编程初体验

Shell脚本编程初体验 分类 编程技术 通 常,当人们提到"shell脚本语言"时,浮现在他们脑海中是bash,ksh,sh或者其它相类似的linux/unix脚本语言.脚本语言是与计算机 交流的另外一种途径.使用图形化窗口界面(不管是windows还是linux都无所谓)用户可以移动鼠标并点击各种对象,比如按钮.列表.选框等等.但 这种方式在每次用户想要计算机/服务器完成相同任务时(比如说批量转换照片,或者下载新的电影.mp3等)却是十分不方便.要想让所有这些事情变得简单并 且自动

好程序员Java学习路线分享JDBC初体验

好程序员Java学习路线分享JDBC初体验,JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成.JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序 -?Java 具有坚固.安全.易于使用.易于理解和可从网络上自动下载等特性,是编写数据库应用程序的杰出语言.所需要的只是 Java应用程序与各种不同数据库之