4

後で次のコードスニペットに渡すためにsoapMessageを作成しようとしています。

SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory.newInstance();
SOAPConnection connection = soapConnectionFactory.createConnection();
SOAPMessage response = connection.call(message, url);

しかし、私は空の(null)応答を受け取っています:[SOAP-ENV:Body:null]。

以下を実行すると(接続呼び出しの前に):

System.out.println(message.getSOAPBody());
message.writeTo(System.out);

同じである必要があるときに2つの異なる応答が返されますよね?

最初のシステムprintlnは[SOAP-ENV:Body:null]を表示し、もう1つは実際に作成したsoapメッセージ(writeTo)を表示します。

なぜ何かアイデアはありますか?

完全なコード:

MessageFactory factory = MessageFactory.newInstance();
SOAPMessage message = factory.createMessage();
SOAPEnvelope envelope = message.getSOAPPart().getEnvelope();
SOAPElement tvl = envelope.addAttribute(new QName("xmlns:tvl"), "http://some.url.com/");
SOAPBody body = message.getSOAPBody();
QName bodyText = new QName("tvl:searchAirings");
SOAPBodyElement bodyElement = body.addBodyElement(bodyText); 
QName fromTag = new QName("from");
SOAPElement from = bodyElement.addChildElement(fromTag);
from.setValue("2012-11-02T14:00:00-4:00");

QName toTag = new QName("to");
SOAPElement to = bodyElement.addChildElement(toTag);
to.setValue("2012-11-02T18:00:00-4:00");

QName networkTag = new QName("network");
SOAPElement network = bodyElement.addChildElement(networkTag);
network.setAttribute("id", "n501");
network.setAttribute("language", "es");

System.out.println(message.getSOAPBody());
message.writeTo(System.out);
4

2 に答える 2

1

System.out.println(message.getSOAPBody());=> これは、SOAP エンベロープの本文を出力するだけです。

message.writeTo(System.out);=> これにより、完全な SOAP メッセージ、つまりエンベロープ、ヘッダー、および本文が出力されます。

于 2012-11-05T19:35:13.440 に答える