Java Axis2发送SOAP响应
问题描述:
我试图在收到请求后发送SOAP消息。在Eclipse Mars 2中,我从.wsdl生成Java Bean Skeleton。 .wsdl只有一个名为send
的操作。在Axis2生成所有类和.xml文件后,它有一个名为MyServiceSkeleton.java
的类,其中send()
方法是。Java Axis2发送SOAP响应
在该方法中,我能够接收SOAP请求,并提取XML数据与此代码:
String xml = myServiceClass.getOMElement(null, OMAbstractFactory.getOMFactory()).toStringWithConsume();
我现在想要一个新的SOAP消息,或者发送一个响应返回给请求者或给定的IP地址/网址。基本上我有一个XML字符串,我使用请求中的数据创建了一个XML字符串,并且我想将它转换为SOAP消息,然后将SOAP消息发送到某个地方。
我假设我必须向我要发送给它的服务器发出请求。我尝试这样做:
public void soapConnection() {
try {
SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory.newInstance();
SOAPConnection soapConnection = soapConnectionFactory.createConnection();
// Send to server
String url = "some ip address or url";
soapConnection.call(createSOAPRequest(), url);
soapConnection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public SOAPMessage createSOAPRequest() throws Exception {
MessageFactory messageFactory = MessageFactory.newInstance();
SOAPMessage soapMessage = messageFactory.createMessage();
SOAPPart soapPart = soapMessage.getSOAPPart();
String uri = "some uri";
SOAPEnvelope envelope = soapPart.getEnvelope();
envelope.addNamespaceDeclaration("ns1", uri);
// Take XML String and turn into envelope
soapMessage.saveChanges();
return soapMessage;
}
我不知道如何将部分soapMessage.saveChanges()
代码之前。任何帮助,将不胜感激。
答
您可以通过更改服务方法返回类型(服务方法是暴露给正在使用您的服务的外部用户的方法)向调用方发送一个字段或一个对象。欲了解更多详情,请参阅解答此问题SOAP fault handling in java