一直用Jmeter测试post接口,但报文信息都是明文方式,今天测试兄弟求助二进制报文如何使用Jmeter测试,查看了项目源码,报文中不仅采用二进制,而且还用java.util.zip进行了压缩,从晚上找的资料说是可以通过修改Jmeter配置实现,但测试并未成功,因此采用Jmeter定制Java请求方式实现,步骤如下:

1.新建Java工程

2.主要用到的jar包

3.新建代码如下:

  1. package com.test.jmeter;
  2.  
  3. import java.io.IOException;
  4.  
  5. import javacommon.util.ResultClass;
  6. import javacommon.util.send.InnerSendZip;
  7.  
  8. import org.apache.http.client.ClientProtocolException;
  9. import org.apache.jmeter.config.Arguments;
  10. import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
  11. import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
  12. import org.apache.jmeter.samplers.SampleResult;
  13.  
  14. public class Jmeter_Byte extends AbstractJavaSamplerClient {
  15.  
  16. private static String label = "ByteResponse "; //定义label名称,显示在jmeter的结果窗口
  17. private String url;
  18. private String data;
  19.  
  20. public void setupTest() {
  21. // 定义测试初始值,setupTest只在测试开始前使用
  22. System.out.println("setupTest");
  23. }
  24.  
  25. @Override
  26. public SampleResult runTest(JavaSamplerContext arg0) {
  27.  
  28. url = arg0.getParameter("url");
  29. data = arg0.getParameter("data");
  30. SampleResult sr;
  31. sr = new SampleResult();
  32. sr.setSampleLabel(label);
  33. ResultClass resultClass = new ResultClass();
  34. sr.sampleStart();
  35. // 调用被压测接口的方法
  36. resultClass = InnerSendZip.sendData(url, data,8000,90000);
  37. if (resultClass.getResult() == 0) {
  38. sr.setSuccessful(true);
  39. }else {
  40. sr.setSuccessful(false);
  41. }
  42. sr.sampleEnd(); // jmeter 结束统计响应时间标记
  43. sr.setResponseCode(String.valueOf(resultClass.getResultCode()));//响应值
  44. sr.setResponseMessage(resultClass.getResultDesc());//响应信息
  45. return sr;
  46. }
  47.  
  48. public void teardownTest(JavaSamplerContext arg0) {
  49. super.teardownTest(arg0);
  50. }
  51.  
  52. public Arguments getDefaultParameters() {
  53. // 参数定义,显示在前台,也可以不定义
  54. Arguments params = new Arguments();
  55. params.addArgument("url","http://127.0.0.1:8080/Interface/api/CisInnerSync?platform=cis&correlateid=2fd5473db72740bfa18b68abc09409e9");
  56. params.addArgument("data","{\"areaNo\":\"TEST\",\"bit_rate\":\"1.5\",\"xmlPath\":\"ftp://ti111:123456@192.168.4.135/ADI/test/20161115/杭州/XML/第二次二十岁02.xml\",\"tsPath\":\"ftp://t1111:123456@192.168.4.135/ADI/第二次二十岁02.ts\",\"priviewTsPath\":\"\",\"imagePath\":\"ftp://tiest:123456@192.168.4.135/ADI/test/20161115/杭州/海报/第二次二十岁02.jpg\"}");
  57. return params;
  58. }
  59. }

4.完成后打成jar包放入Jmeter {Jmeter}\lib\ext目录下

4.重启Jmeter,并新建测试线程

5.查看结果

6.技术参考链接如下:

http://www.cnblogs.com/liu-ke/p/4325607.html

Jmeter软件测试3--发送二进制报文的更多相关文章

  1. java socket解析和发送二进制报文工具(附java和C++转化问题)

    解析: 首先是读取字节: /** * 读取输入流中指定字节的长度 * <p/> * 输入流 * * @param length 指定长度 * @return 指定长度的字节数组 */ pu ...

  2. Jmeter软件测试1--webservice测试

    写在前言 程序猿一枚,原本就是负责安安静静的撸代码,后来公司让兼任下测试的工作,还得照顾下面的几个测试兄弟,无奈本人毫无软件测试理论知识,下面的测试兄弟也是初级水平,又面临公司要求做webservic ...

  3. Asp.net Core中SignalR Core预览版的一些新特性前瞻,附源码(消息订阅与发送二进制数据)

    目录 SignalR系列目录(注意,是ASP.NET的目录.不是Core的) 前言 一晃一个月又过去了,上个月有个比较大的项目要验收上线.所以忙的脚不沾地.现在终于可以忙里偷闲,写一篇关于Signal ...

  4. jmeter向ActiveMQ发送消息_广播/订阅(Topics 队列)

    问题描述:测试中需要模拟大量设备的消息上报到平台,但是实际测试中没有那么多设备,所以采取用jmeter直接往ActiveMQ模拟发送设备消息 解决思路:获取平台采取的是Queues还是Topics : ...

  5. JMeter 中实现发送Java请求

    JMeter 中实现发送Java请求 1.  步骤1 新建JAVA项目 File -> New -> Java Project 如上图,填写Project Name,然后Next,打开以J ...

  6. Java 用HTTP的方式发送JSON报文请求

    前言: 项目调用第三方接口时,通常是用socket或者http的通讯方式发送请求:http 为短连接,客户端发送请求都需要服务器端回送响应,请求结束后,主动释放链接.Socket为长连接:通常情况下S ...

  7. Java模拟POST请求发送二进制数据

    在进行程序之间数据通信时我们有时候就需要自定义二进制格式,然后通过HTTP进行二进制数据交互.交互的示例代码如下: public static void main(String[] args) { S ...

  8. [ActionScript 3.0] AS利用ByteArray向PHP发送二进制数据生成图片

    flash as3向php发送二进制数据,通过php保存成图片. AS端: package { import com.JPEGEncoder.JPGEncoder; import flash.disp ...

  9. TCP协议详解7层和4层解析(美团,阿里) 尤其是三次握手,四次挥手 具体发送的报文和状态都要掌握

    如果想了解HTTP的协议结构,原理,post,get的区别(阿里面试题目),请参考:HTTP协议 结构,get post 区别(阿里面试) 这里有个大白话的解说,可以参考:TCP/IP协议三次握手和四 ...

随机推荐

  1. Selenium终极自动化测试环境搭建(二):Selenium+Eclipse+Python

    前面举例了Selenium+Eclipse+Junit+TestNG自动化测试环境的搭建,在前一篇的基础上,下面再举例Selenium+Eclipse+Python测试环境搭建. 第一步:安装Pyth ...

  2. Web---session技术代码演示(request,session,servletContext)

    Session会话简介与基本知识点 当浏览器第一次访问服务器时,无论先访问哪一个页面,服务器就会给用户分配一个唯一的会话标识,即jsessionid然后以cookie的形式返回给用户. 会话是指在一段 ...

  3. jvm参数优化

    一.HotSpot JVM 提供了三类参数 现在的JVM运行Java程序(和其它的兼容性语言)时在高效性和稳定性方面做的非常出色.例如:自适应内存管理.垃圾收集.及时编译.动态类加载.锁优化等.虽然有 ...

  4. mysql忘记帐号密码 解决办法

    首先关闭mysql 使用命令行启动mysql(一般要找到mysql.ini文件) 在windows上mysql.ini文件可以通过查看当前mysql进程参数查看到,具体方法点此 在启动mysql命令行 ...

  5. Nginx对于图片,js等静态文件的缓存设置

    以下是自学it网--中级班上课笔记 网址:www.zixue.it Nginx对于图片,js等静态文件的缓存设置 注:这个缓存是指针对浏览器所做的缓存,不是指服务器端的数据缓存. 主要知识点: loc ...

  6. Java集合类详解

    集合类说明及区别Collection├List│├LinkedList│├ArrayList│└Vector│ └Stack└SetMap├Hashtable├HashMap└WeakHashMap ...

  7. c#判断输入textbox是否为数字

    asp.net判断输入文字是否是数字 方案一:/**//// <summary> /// 名称:IsNumberic /// 功能:判断输入的是否是数字 /// 参数:string oTe ...

  8. getline和get的区别

    #include<iostream> #include<fstream> #include<cstring> using namespace std; int ma ...

  9. android智能天气闹钟应用开发经过

    开发这个应用的初衷是这样产生滴,和我一块租房的同学每天早上都是骑单车上班,所以手机闹钟就会定一个刚好适合骑车的起床时间点.但是呢,有一天早上起床以后发现外面下挺大雨,肯定是不能骑车去上班了,于是就只好 ...

  10. cookie 和 HttpSession

    保存会话数据的两种技术 Cookie Cookie 是客户端技术,程序把每个用户的数据以cookie的形式写给用户的浏览器.当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去.web ...