1

我正在尝试调用一些 WS。我的本地机器上有服务器和客户端。我 100% 确定消息的内容,它来自服务器到客户端,没有任何变化。问题是客户端创建的SOAPMessage对象不正确,soapPart 下的信封字段等于 null。

客户端代码:

SOAPMessage responseMsg = conn.call(msg, urlEndpoint);

服务器端代码:

SOAPEnvelope envelope = sp.getEnvelope();
SOAPHeader hdr = envelope.getHeader();
SOAPBody bdy = envelope.getBody();
bdy.addBodyElement(envelope.createName("response", "soa", "http://www.sbg.com"));

return msg;

Id 调试窗口我看到以下内容:

1) 服务器端调试窗口

服务器端调试窗口

2) 客户端调试窗口

客户端调试窗口

我正在使用 SAAJ 进行通信和 JDK 1.6。

有人可以协助解决这个问题吗?

4

2 回答 2

1

您对(客户端和服务器)都负责吗?客户端发送的消息是什么?

以我的经验,它有助于使用像 SoapUI 这样的工具来测试消息:

http://www.soapui.org/

于 2012-12-20T14:10:51.900 回答
0

尝试这个:

    SOAPMessage sm = MessageFactory.newInstance().createMessage();
    sm.setProperty(SOAPMessage.WRITE_XML_DECLARATION, "true");
    sm.setProperty(SOAPMessage.CHARACTER_SET_ENCODING, "UTF-8");

    SOAPPart sp = sm.getSOAPPart();
    SOAPEnvelope se = sp.getEnvelope();
    se.setEncodingStyle("http://schemas.xmlsoap.org/soap/encoding/");
    se.setAttribute("xmlns:SOAP-ENC", "http://schemas.xmlsoap.org/soap/encoding/");
    se.setAttribute("xmlns:soa", "http://www.sbg.com");

    SOAPBody sb = sm.getSOAPBody();
    SOAPBodyElement el = sb.addBodyElement(new QName("http://www.sbg.com", "response", "soa"));
    el.setAttribute("_ctxID", "cid=xref_members,cn=admin");
    el.setAttribute("status", "OK");
    SOAPElement in = el.addChildElement("response_code");
    in.setValue("0000");
    sm.writeTo(System.out);
于 2012-12-20T14:42:21.617 回答