2016-06-09 197 views
0

我试图在收到请求后发送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()代码之前。任何帮助,将不胜感激。

回答

0

您可以通过更改服务方法返回类型(服务方法是暴露给正在使用您的服务的外部用户的方法)向调用方发送一个字段或一个对象。欲了解更多详情,请参阅解答此问题SOAP fault handling in java