繁体   English   中英

从JMeter采样器读取二进制数据

[英]Reading the Binary Data from JMeter sampler

尝试从JMeter采样器读取Binary数据响应,然后在BeanShlll Post Processor中反序列化它。

流程是,控制器首先将请求发送到Web服务,该服务返回二进制数据。 当我在JMeter中查看时,我看到了一些垃圾字符。

我需要将其转换为BeanShell脚本中的实际对象(我的自定义对象)。

这就是我尝试过的。 但是没有运气。 还是我正在尝试一些愚蠢的事情。 PS:刚接触IO的新手。

 import java.io.ObjectOutputStream;
 import com.package.MyClass;

 MyClass myObj = new MyClass();
 ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(data));

 myObj = ois.readObject();

这是行不通的。 它什么也没显示。 有什么帮助吗?

您确定readObject方法可用于该二进制数据吗? 例如,不要发生StreamCorruptedException并且您的后处理器停止工作。

按照如何使用BeanShell指南

由于Beanshell是在Rhino引擎中执行的,因此除了检查jmeter.log文件是否有类似问题之外,没有其他选择可以看到问题所在:调用bsh方法并使用System.out.println(“ something”)或log.info(“ something ”)进入脚本失败的底部。

您没有办法验证后处理器是否成功,则必须查看日志和/或在末尾添加一些调试输出语句。

另一种有用的技术是用try/catch包围代码

有关使用方法,请参见下面的示例。 如果“一切都很好”,则后处理器将把Successfully read data into myObj打印Successfully read data into myObj并输出到STDOUT中。 在相反的情况下,您会在此处看到相关的错误stacktrace。

    import java.io.ByteArrayInputStream;
    import java.io.ObjectInputStream;
    try {
        ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(data));
        Object myObj = ois.readObject();
        ois.close();
        System.out.println("Successfully read data into myObj"); 
    } catch (Exception ex) {
        ex.printStackTrace();
    }

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM