2014-01-30 5 views
0

Пытается прочитать ответ двоичных данных из пробоотборника JMeter и десериализировать его в обработчике столбцов BeanShlll.Чтение двоичных данных из пробоотборника JMeter

Поток, контроллер сначала отправляет запрос в веб-сервис, который возвращает двоичные данные. Когда я вижу это в 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(); 

Не работает. Он ничего не показывает. Любая помощь?

ответ

0

Вы уверены, что метод readObject работает с этими двоичными данными? Например, например, не происходит StreamCorruptedException и ваш постпроцессор перестает работать.

В соответствии с Как использовать BeanShell руководство

Как Beanshell выполняется в двигателе Rhino нет другого выбора, чтобы посмотреть, что случилось, кроме проверки jmeter.log файл что-то вроде: Ошибка вызова метода BSH и использования System.out.println («что-то») или log.info («что-то»), чтобы добраться до конца, где сбой сценария.

У вас нет возможности проверить успешность вашего постпроцессора, вам нужно будет заглянуть в журналы и/или добавить конец вывода вывода в конец.

Другой метод, который может быть полезен окружающим код с try/catch

пример ниже о том, как использовать. В случае «все в порядке» почтовый процессор напечатает 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(); 
    } 

Надеюсь, что это поможет.

+0

Я использовал readObjext для подобных вещей, и он работает. Просто не в этом случае. Спасибо –

+0

Что говорит jmeter.log? Любые ошибки, связанные с beanshell? Любые исключения в stdout, когда ваш код завернут в блок try/catch? Является ли 'MyClass' jar в классе JMeter classpath? –

+0

Он просто ничего не показывает. Даже с try/catch. Пока что я просто сохраняю ответ на файл и читаю этот файл с помощью InputStream. Оно работает. –

Смежные вопросы