【问题标题】:Need to send Byte Array through Webservice in jmeterjmeter中需要通过Webservice发送字节数组
【发布时间】:2014-06-10 13:40:32
【问题描述】:

我应该将图像转换为数组字节并将其与 Web 服务 中的目标位置一起发送。 我有这段代码用 beanshell 写的

File file = new File("\\PICS\\k6.jpg"); 
FileInputStream in = new FileInputStream(file);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int i=0;
for (int i; (i = in.read(buffer)) != -1; ) 
{
bos.write(buffer, 0, i);
}
in.close();
 byte[] imageData = bos.toByteArray();
 bos.close();
 vars.put("imageData", new String(imageData));

我正面临这个错误- 在文档的元素内容中发现了无效的 XML 字符 (Unicode: 0x0)。

变量“imageData”似乎是 ASCII 但如何将它与请求一起发送。我需要数组对象

【问题讨论】:

    标签: web-services bytearray jmeter


    【解决方案1】:

    尝试将以下行添加到脚本的顶部:

    import org.apache.commons.lang.StringEscapeUtils;
    

    并将最后一行更改为如下所示:

    vars.put("imageData", StringEscapeUtils.escapeXml(new String(imageData)));
    

    UPD:端到端代码

    import org.apache.commons.lang.StringEscapeUtils;
    
    File file = new File("/home/glinius/test.html");
    FileInputStream in = new FileInputStream(file);
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    byte[] buffer = new byte[1024];    
    for (int i; (i = in.read(buffer)) != -1; ) {
        bos.write(buffer, 0, i);
    }
    in.close();
    byte[] imageData = bos.toByteArray();
    bos.close();
    vars.put("imageData", StringEscapeUtils.escapeXml(new String(imageData)));
    

    【讨论】:

    • 它仍然无法工作 出现此错误尝试解决方法:未定义变量或类名上的 escapeXml():StringEscapeUtils 并且变量中的 ASCII 值不再被解析。这是我使用 2.11 而在 2.9 中它仍然显示以前的错误
    • 刚刚用完整代码更新了我的答案。看起来您没有 import 语句,这就是 JMeter 无法恢复 StringEscapeUtils 类的原因
    • 我只是第一次得到它但它不起作用可能是因为它是由Web服务制定的
    • 嗯,我能做到最后,@ Dmitri,你的代码确实有帮助(唷...)开发人员没有告诉它应该在 base64 中发送b> 格式,因此错误不断出现
    猜你喜欢
    • 1970-01-01
    • 2014-02-14
    • 1970-01-01
    • 1970-01-01
    • 2019-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多