2011-09-12 89 views
1

如何在通過SOAP消息調用時將自定義對象指定爲Web服務方法的參數?將自定義對象作爲Web服務的參數發送

說我有這樣的代碼:

SOAPElement operation = body.addChildElement("MyMethod", "", trgNamespace); 
SOAPElement value = operation.addChildElement("arg0"); 
value.addTextNode("i need to send here a custom object not a string") 
request.saveChanges(); 

的addTextNode發送的字符串,而我需要把我自己的對象作爲調用的參數。

回答

2

您必須序列化您的對象才能通過線路傳輸它。序列化通常使用XML或JSON完成,請參閱以下鏈接瞭解詳細信息:http://en.wikipedia.org/wiki/Serialization

這應該讓您走上正確的道路。

+0

我可以通過jaxb的編組來完成。另一個問題是我如何將它注入肥皂和地方?說,我確實有一個存儲在StringWriter中的XML,它代表了我的對象。作爲參數傳遞它的下一步是什麼? – azerIO

+0

除非我不瞭解您的環境的複雜性......,請將您的字符串打印機的字符串輸出設置爲您的文本節點的值?或者,如果您想要將任何序列化的XML內容直接包含在您的SOAP消息體中,請使用類似XMLDocument類的內容來讀取您的XML並將其設置爲文檔內容。 – kroonwijk

0

也許嘗試更高的水平,並使用基於wsdl的存根生成器的Java?這是Axis wsdl to java

+0

nope,我需要以「低級別」方式執行此操作 – azerIO

+0

但是,爲什麼您不能只將其設置爲value.addChildElement(SOAPElement元素)?在其他情況下[如果它需要是一個字符串],您應該像kroonwijk寫道的那樣使用序列化。 –

+0

我有一個「MyMethod」方法的網絡服務。此方法接受一個自定義對象。我如何通過僅使用soap消息並且不使用axis/cfx等來調用此方法,以在客戶端指定自定義對象 – azerIO

0

我能想到的另一種方法

  1. 您可以發送自定義對象爲二進制數據(我假設你的對象序列化,能)。然後按照Base64編碼對數據進行編碼。
  2. 前面有問題similar problem。 Plz看看這個鏈接。這似乎與您的問題最相關。
  3. Another link在上面的文章中提到了一般處理這些類型的問題的很好的概述。
相關問題