шпунтовое мыло десериализовать - PullRequest
2 голосов
/ 02 марта 2012

Только начал использовать soapUI, и мне это очень нравится.

В конкретном случае использования REST я получаю сериализованный объект.

Хотелось бы:

  • для получения сериализованного байтового массива и преобразования его в объект Java

  • преобразование объекта Java в ответ XML (с использованием JAXB) так что это может быть читаемым человеком.

Это возможно?

1 Ответ

1 голос
/ 07 августа 2012

Обязательно рассмотрите возможность использования XML-сериализации (например, XStream ) вместо двоичной, чтобы избежать проблем совместимости версий , прежде чем использовать следующее решение:

  1. Импортируйте свой класс Java в Groovy-скрипт SoapUI (, как описано там ) или измените класс Java в Groovy-коде с реализованным интерфейсом Serializable:

    class Person implements Serializable { String name; int age }
    
  2. Используйте ObjectInputStream и classLoader для загрузки десериализации объектов в объект:

    // use your byte array variable instead of yourByteArray
    input = new ByteArrayInputStream(yourByteArray)
    // use your object variable instead of yourObject
    yourObject = null
    input.withObjectInputStream(getClass().classLoader){ ois -> yourObject = ois.readObject() }
    
  3. Используйте ObjectOutputStream для сериализации обновленных объектов и сохранения их в ответ XML:

    output = new ByteArrayOutputStream()
    output.withObjectOutputStream { oos -> oos << yourObject }
    //save serialized data as byte array
    output.toByteArray()
    
...