用 Java 编写 XML SOAP 消息

问题描述

我有以下接受 xml方法,并且我对内容进行了一些数据馈送。 我也应该返回一条 SOAP 消息,内容大致如下:

<ow-e:Envelope revision='2.0' xmlns:ow-e='http://www.url.com/test-envelope'>
   <ow-e:Header>
      <ow-e:Properties>
         <ow-e:SentAt>2004-12-14T13:54:36</ow-e:SentAt>
         <ow-e:Topic>SOME_STRING</ow-e:Topic>
      </ow-e:Properties>
   </ow-e:Header>
</ow-e:Envelope>

所以现在我正在做的是:

String some_string = "qwe";
String response = "";

response = "<ow-e:Envelope revision='2.0' xmlns:ow-e='http://www.url.com/test-envelope'><ow-e:Header><ow-e:Properties><ow-e:SentAt>2004-12-14T13:54:36</ow-e:SentAt><ow-e:Topic>" + some_string + "</ow-e:Topic></ow-e:Properties></ow-e:Header></ow-e:Envelope>";

return response;

这绝对是可怕的。知道我如何才能让它更容易忍受吗?使用框架目前不是一种选择。

这是我第一次处理 SOAP 消息/响应,感觉就像来自 REST 的地狱。我可能需要创建某种层次结构来正确填充值,但我不确定如何在没有任何框架的情况下使用 Java 来完成。

解决方法

您提到使用框架不是一种选择,但您的平台可能会提供更轻量级的东西:

  • JAXB。 JAXB 允许您使用注释将 Java 类映射到 XML 表示。它比手动或通过连接或解析字符串进行编组和解组要好得多。有了正确结构化和注释的 POJO,JAXB 可以为您处理事情。您甚至可以欺骗并在 WSDL 文件中使用 xjc 来创建带有 -wsdl 选项的带注释的类(不过是实验性的)。
  • SAAJ。坦率地说,SAAJ 就像 SOAP 消息的特定构建器和解析器。它将为您处理结构和命名空间。说起来……

...您所展示的示例并不是真正有效的 SOAP 消息。 SOAP 是一种协议。您需要对其进行正确格式化并使用正确的名称空间,否则您只会返回一些看起来像 SOAP 但实际上不是的 XML 消息。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...