2012-03-02 37 views
2

刚开始使用soapUI,我非常喜欢它。groovy soapUI反序列化

在使用REST的特定情况下,我正在接收序列化对象。

我想:

  • 检索串行化字节数组,并将其转换到Java对象

  • 重新变换java对象为XML响应(使用JAXB) 所以它可以是人类可读的。

这可行吗?

回答

1

一定要考虑使用XML序列化(如XStream),而不是二进制一个避免version compatibility problems使用下一个解决方案之前:

  1. 导入您的Java类来了SoapUI Groovy脚本(as described there)或重新定义在Groovy代码的Java类Serializable接口来实现:

    class Person implements Serializable { String name; int age } 
    
  2. 使用ObjectInputStreamclassLoader加载反序列化对象插入对象:

    // 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()