2012-03-02 85 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()