Java 使用SAAJ调用webService时出错

Java 使用SAAJ调用webService时出错,java,web-services,soap,soapui,saaj,Java,Web Services,Soap,Soapui,Saaj,嗨,伙计们 我试图使用SAAJ实现一个SOAP客户端,该客户端返回一个附件,但不幸的是,我无法解析响应,因为当我调用方法soapConnection.call(message,url)时 我收到此错误消息stacktrace: Error occurred while sending SOAP Request to Server javax.xml.soap.SOAPException: java.io.IOException: Could not transmit message

嗨,伙计们

我试图使用
SAAJ
实现一个
SOAP
客户端,该客户端返回一个附件,但不幸的是,我无法解析响应,因为当我调用方法soapConnection.call(message,url)时

我收到此错误消息stacktrace:

    Error occurred while sending SOAP Request to Server
javax.xml.soap.SOAPException: java.io.IOException: Could not transmit message
    at org.jboss.ws.core.soap.SOAPConnectionImpl.callInternal(SOAPConnectionImpl.java:152)
    at org.jboss.ws.core.soap.SOAPConnectionImpl.call(SOAPConnectionImpl.java:64)
    at it.infocamere.leii.batch.test.SOAPClientSAAJ.main(SOAPClientSAAJ.java:31)
Caused by: java.io.IOException: Could not transmit message
    at org.jboss.ws.core.client.HTTPRemotingConnection.invoke(HTTPRemotingConnection.java:267)
    at org.jboss.ws.core.client.SOAPProtocolConnectionHTTP.invoke(SOAPProtocolConnectionHTTP.java:71)
    at org.jboss.ws.core.soap.SOAPConnectionImpl.callInternal(SOAPConnectionImpl.java:143)
    ... 2 more
Caused by: org.jboss.remoting.CannotConnectException: Can not connect http client invoker after 1 attempt(s)
    at org.jboss.remoting.transport.http.HTTPClientInvoker.makeInvocation(HTTPClientInvoker.java:271)
    at org.jboss.remoting.transport.http.HTTPClientInvoker.transport(HTTPClientInvoker.java:176)
    at org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientInvoker.java:169)
    at org.jboss.remoting.Client.invoke(Client.java:2070)
    at org.jboss.remoting.Client.invoke(Client.java:879)
    at org.jboss.ws.core.client.HTTPRemotingConnection.invoke(HTTPRemotingConnection.java:246)
    ... 4 more
Caused by: org.jboss.ws.WSException: Failed to inline XOP data
    at org.jboss.ws.extensions.xop.XOPContext.replaceXOPInclude(XOPContext.java:342)
    at org.jboss.ws.extensions.xop.XOPContext.inlineXOPData(XOPContext.java:165)
    at org.jboss.ws.core.soap.SOAPFactoryImpl.createElement(SOAPFactoryImpl.java:143)
    at org.jboss.ws.core.soap.SOAPFactoryImpl.createElement(SOAPFactoryImpl.java:106)
    at org.jboss.ws.core.soap.EnvelopeBuilderDOM.buildBodyElementDefault(EnvelopeBuilderDOM.java:400)
    at org.jboss.ws.core.soap.EnvelopeBuilderDOM.buildSOAPBodyElement(EnvelopeBuilderDOM.java:316)
    at org.jboss.ws.core.soap.EnvelopeBuilderDOM.buildSOAPBody(EnvelopeBuilderDOM.java:246)
    at org.jboss.ws.core.soap.EnvelopeBuilderDOM.build(EnvelopeBuilderDOM.java:168)
    at org.jboss.ws.core.soap.EnvelopeBuilderDOM.build(EnvelopeBuilderDOM.java:97)
    at org.jboss.ws.core.soap.MessageFactoryImpl.createMessage(MessageFactoryImpl.java:294)
    at org.jboss.ws.core.soap.SOAPMessageUnMarshallerHTTP.read(SOAPMessageUnMarshallerHTTP.java:82)
    at org.jboss.remoting.transport.http.HTTPClientInvoker.readResponse(HTTPClientInvoker.java:608)
    at org.jboss.remoting.transport.http.HTTPClientInvoker.useHttpURLConnection(HTTPClientInvoker.java:402)
    at org.jboss.remoting.transport.http.HTTPClientInvoker.makeInvocation(HTTPClientInvoker.java:253)
    ... 9 more
Caused by: java.lang.NullPointerException
    at org.jboss.ws.extensions.xop.XOPContext.getAttachmentByCID(XOPContext.java:380)
    at org.jboss.ws.extensions.xop.XOPContext.replaceXOPInclude(XOPContext.java:330)
    ... 22 more
public class SOAPClientSAAJ {

/**
 * Starting point for the SAAJ - SOAP Client Testing
 */
public static void main(String args[]) {
    try {
        // Create SOAP Connection
        SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory.newInstance();
        SOAPConnection soapConnection = soapConnectionFactory.createConnection();   
        // Send SOAP Message to SOAP Server
        String url = "http://gemo.infocamere.it/gemows/services/GemoService";
        SOAPMessage soapRequest = createSOAPRequest();
        SOAPMessage soapResponse = soapConnection.call(soapRequest, url);

        // Process the SOAP Response
        printSOAPResponse(soapResponse);

        soapConnection.close();
    } catch (Exception e) {
        System.err.println("Error occurred while sending SOAP Request to Server");
        e.printStackTrace();
    }
}

private static SOAPMessage createSOAPRequest() throws Exception {
    MessageFactory messageFactory = MessageFactory.newInstance();

    SOAPMessage soapMessage = messageFactory.createMessage();
    SOAPPart soapPart = soapMessage.getSOAPPart();

    String serverURI = "http://ws.gemo.infocamere.it";

    // SOAP Envelope
    SOAPEnvelope envelope = soapPart.getEnvelope();
    envelope.addNamespaceDeclaration("ws", serverURI);

    // SOAP Body
    SOAPBody soapBody = envelope.getBody();
    SOAPElement richiestaRicerca = soapBody.addChildElement("richiestaRicerca", "ws");
    SOAPElement denominazione = richiestaRicerca.addChildElement("denominazione");
    SOAPElement provincia = denominazione.addChildElement("provincia");
    SOAPElement denominazioneImpresa = denominazione.addChildElement("denominazione");
    provincia.addTextNode("RM");
    denominazioneImpresa.addTextNode("infocamere");
    MimeHeaders headers = soapMessage.getMimeHeaders();

    String authorization = new sun.misc.BASE64Encoder().encode(("user"+":"+"password").getBytes());

    headers.addHeader("SOAPAction", "ricercaImprese");
    headers.addHeader("Authorization", "Basic " + authorization);
    headers.setHeader("Content-Type", "text/xml; charset=utf-8");
    soapMessage.saveChanges();

    /* Print the request message */
    System.out.print("Request SOAP Message = ");
    soapMessage.writeTo(System.out);
    System.out.println();

    return soapMessage;
}

/**
 * Method used to print the SOAP Response
 */
private static void printSOAPResponse(SOAPMessage soapResponse) throws Exception {
    TransformerFactory transformerFactory = TransformerFactory.newInstance();
    Transformer transformer = transformerFactory.newTransformer();
    Source sourceContent = soapResponse.getSOAPPart().getContent();
    System.out.print("\nResponse SOAP Message = ");
    StreamResult result = new StreamResult(System.out);
    transformer.transform(sourceContent, result);
}
<env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/' 
        xmlns:ws='http://ws.gemo.infocamere.it'>
<env:Header></env:Header>
<env:Body>
    <ws:richiestaRicerca xmlns:ws='http://ws.gemo.infocamere.it'>
        <denominazione>
            <provincia>RM</provincia>
            <denominazione>infocamere</denominazione>
        </denominazione>
    </ws:richiestaRicerca>
</env:Body>
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <ns3:rispostaRicerca xmlns:ns3="http://ws.gemo.infocamere.it" xmlns:ns2="http://beans.ws.gemo.infocamere.it">
         <dataVisura>2014-07-28+02:00</dataVisura>
         <esito>true</esito>
         <descrizione>OK</descrizione>
         <documento>
            <xop:Include href="cid:14f6d083-938f-448a-bd76-9d0bb9783a6e-20@cxf.apache.org" xmlns:xop="http://www.w3.org/2004/08/xop/include"/>
         </documento>
      </ns3:rispostaRicerca>
   </soap:Body>
</soap:Envelope>
这是我的Java客户端代码:

    Error occurred while sending SOAP Request to Server
javax.xml.soap.SOAPException: java.io.IOException: Could not transmit message
    at org.jboss.ws.core.soap.SOAPConnectionImpl.callInternal(SOAPConnectionImpl.java:152)
    at org.jboss.ws.core.soap.SOAPConnectionImpl.call(SOAPConnectionImpl.java:64)
    at it.infocamere.leii.batch.test.SOAPClientSAAJ.main(SOAPClientSAAJ.java:31)
Caused by: java.io.IOException: Could not transmit message
    at org.jboss.ws.core.client.HTTPRemotingConnection.invoke(HTTPRemotingConnection.java:267)
    at org.jboss.ws.core.client.SOAPProtocolConnectionHTTP.invoke(SOAPProtocolConnectionHTTP.java:71)
    at org.jboss.ws.core.soap.SOAPConnectionImpl.callInternal(SOAPConnectionImpl.java:143)
    ... 2 more
Caused by: org.jboss.remoting.CannotConnectException: Can not connect http client invoker after 1 attempt(s)
    at org.jboss.remoting.transport.http.HTTPClientInvoker.makeInvocation(HTTPClientInvoker.java:271)
    at org.jboss.remoting.transport.http.HTTPClientInvoker.transport(HTTPClientInvoker.java:176)
    at org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientInvoker.java:169)
    at org.jboss.remoting.Client.invoke(Client.java:2070)
    at org.jboss.remoting.Client.invoke(Client.java:879)
    at org.jboss.ws.core.client.HTTPRemotingConnection.invoke(HTTPRemotingConnection.java:246)
    ... 4 more
Caused by: org.jboss.ws.WSException: Failed to inline XOP data
    at org.jboss.ws.extensions.xop.XOPContext.replaceXOPInclude(XOPContext.java:342)
    at org.jboss.ws.extensions.xop.XOPContext.inlineXOPData(XOPContext.java:165)
    at org.jboss.ws.core.soap.SOAPFactoryImpl.createElement(SOAPFactoryImpl.java:143)
    at org.jboss.ws.core.soap.SOAPFactoryImpl.createElement(SOAPFactoryImpl.java:106)
    at org.jboss.ws.core.soap.EnvelopeBuilderDOM.buildBodyElementDefault(EnvelopeBuilderDOM.java:400)
    at org.jboss.ws.core.soap.EnvelopeBuilderDOM.buildSOAPBodyElement(EnvelopeBuilderDOM.java:316)
    at org.jboss.ws.core.soap.EnvelopeBuilderDOM.buildSOAPBody(EnvelopeBuilderDOM.java:246)
    at org.jboss.ws.core.soap.EnvelopeBuilderDOM.build(EnvelopeBuilderDOM.java:168)
    at org.jboss.ws.core.soap.EnvelopeBuilderDOM.build(EnvelopeBuilderDOM.java:97)
    at org.jboss.ws.core.soap.MessageFactoryImpl.createMessage(MessageFactoryImpl.java:294)
    at org.jboss.ws.core.soap.SOAPMessageUnMarshallerHTTP.read(SOAPMessageUnMarshallerHTTP.java:82)
    at org.jboss.remoting.transport.http.HTTPClientInvoker.readResponse(HTTPClientInvoker.java:608)
    at org.jboss.remoting.transport.http.HTTPClientInvoker.useHttpURLConnection(HTTPClientInvoker.java:402)
    at org.jboss.remoting.transport.http.HTTPClientInvoker.makeInvocation(HTTPClientInvoker.java:253)
    ... 9 more
Caused by: java.lang.NullPointerException
    at org.jboss.ws.extensions.xop.XOPContext.getAttachmentByCID(XOPContext.java:380)
    at org.jboss.ws.extensions.xop.XOPContext.replaceXOPInclude(XOPContext.java:330)
    ... 22 more
public class SOAPClientSAAJ {

/**
 * Starting point for the SAAJ - SOAP Client Testing
 */
public static void main(String args[]) {
    try {
        // Create SOAP Connection
        SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory.newInstance();
        SOAPConnection soapConnection = soapConnectionFactory.createConnection();   
        // Send SOAP Message to SOAP Server
        String url = "http://gemo.infocamere.it/gemows/services/GemoService";
        SOAPMessage soapRequest = createSOAPRequest();
        SOAPMessage soapResponse = soapConnection.call(soapRequest, url);

        // Process the SOAP Response
        printSOAPResponse(soapResponse);

        soapConnection.close();
    } catch (Exception e) {
        System.err.println("Error occurred while sending SOAP Request to Server");
        e.printStackTrace();
    }
}

private static SOAPMessage createSOAPRequest() throws Exception {
    MessageFactory messageFactory = MessageFactory.newInstance();

    SOAPMessage soapMessage = messageFactory.createMessage();
    SOAPPart soapPart = soapMessage.getSOAPPart();

    String serverURI = "http://ws.gemo.infocamere.it";

    // SOAP Envelope
    SOAPEnvelope envelope = soapPart.getEnvelope();
    envelope.addNamespaceDeclaration("ws", serverURI);

    // SOAP Body
    SOAPBody soapBody = envelope.getBody();
    SOAPElement richiestaRicerca = soapBody.addChildElement("richiestaRicerca", "ws");
    SOAPElement denominazione = richiestaRicerca.addChildElement("denominazione");
    SOAPElement provincia = denominazione.addChildElement("provincia");
    SOAPElement denominazioneImpresa = denominazione.addChildElement("denominazione");
    provincia.addTextNode("RM");
    denominazioneImpresa.addTextNode("infocamere");
    MimeHeaders headers = soapMessage.getMimeHeaders();

    String authorization = new sun.misc.BASE64Encoder().encode(("user"+":"+"password").getBytes());

    headers.addHeader("SOAPAction", "ricercaImprese");
    headers.addHeader("Authorization", "Basic " + authorization);
    headers.setHeader("Content-Type", "text/xml; charset=utf-8");
    soapMessage.saveChanges();

    /* Print the request message */
    System.out.print("Request SOAP Message = ");
    soapMessage.writeTo(System.out);
    System.out.println();

    return soapMessage;
}

/**
 * Method used to print the SOAP Response
 */
private static void printSOAPResponse(SOAPMessage soapResponse) throws Exception {
    TransformerFactory transformerFactory = TransformerFactory.newInstance();
    Transformer transformer = transformerFactory.newTransformer();
    Source sourceContent = soapResponse.getSOAPPart().getContent();
    System.out.print("\nResponse SOAP Message = ");
    StreamResult result = new StreamResult(System.out);
    transformer.transform(sourceContent, result);
}
<env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/' 
        xmlns:ws='http://ws.gemo.infocamere.it'>
<env:Header></env:Header>
<env:Body>
    <ws:richiestaRicerca xmlns:ws='http://ws.gemo.infocamere.it'>
        <denominazione>
            <provincia>RM</provincia>
            <denominazione>infocamere</denominazione>
        </denominazione>
    </ws:richiestaRicerca>
</env:Body>
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <ns3:rispostaRicerca xmlns:ns3="http://ws.gemo.infocamere.it" xmlns:ns2="http://beans.ws.gemo.infocamere.it">
         <dataVisura>2014-07-28+02:00</dataVisura>
         <esito>true</esito>
         <descrizione>OK</descrizione>
         <documento>
            <xop:Include href="cid:14f6d083-938f-448a-bd76-9d0bb9783a6e-20@cxf.apache.org" xmlns:xop="http://www.w3.org/2004/08/xop/include"/>
         </documento>
      </ns3:rispostaRicerca>
   </soap:Body>
</soap:Envelope>
}

我尝试将生成的代码放入SOAPMessage
soapRequest
中的SOAPTools调用
SoapUI
,它让我知道请求是否正常,并向我显示响应,似乎正常

这是生成的请求SOAP:

    Error occurred while sending SOAP Request to Server
javax.xml.soap.SOAPException: java.io.IOException: Could not transmit message
    at org.jboss.ws.core.soap.SOAPConnectionImpl.callInternal(SOAPConnectionImpl.java:152)
    at org.jboss.ws.core.soap.SOAPConnectionImpl.call(SOAPConnectionImpl.java:64)
    at it.infocamere.leii.batch.test.SOAPClientSAAJ.main(SOAPClientSAAJ.java:31)
Caused by: java.io.IOException: Could not transmit message
    at org.jboss.ws.core.client.HTTPRemotingConnection.invoke(HTTPRemotingConnection.java:267)
    at org.jboss.ws.core.client.SOAPProtocolConnectionHTTP.invoke(SOAPProtocolConnectionHTTP.java:71)
    at org.jboss.ws.core.soap.SOAPConnectionImpl.callInternal(SOAPConnectionImpl.java:143)
    ... 2 more
Caused by: org.jboss.remoting.CannotConnectException: Can not connect http client invoker after 1 attempt(s)
    at org.jboss.remoting.transport.http.HTTPClientInvoker.makeInvocation(HTTPClientInvoker.java:271)
    at org.jboss.remoting.transport.http.HTTPClientInvoker.transport(HTTPClientInvoker.java:176)
    at org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientInvoker.java:169)
    at org.jboss.remoting.Client.invoke(Client.java:2070)
    at org.jboss.remoting.Client.invoke(Client.java:879)
    at org.jboss.ws.core.client.HTTPRemotingConnection.invoke(HTTPRemotingConnection.java:246)
    ... 4 more
Caused by: org.jboss.ws.WSException: Failed to inline XOP data
    at org.jboss.ws.extensions.xop.XOPContext.replaceXOPInclude(XOPContext.java:342)
    at org.jboss.ws.extensions.xop.XOPContext.inlineXOPData(XOPContext.java:165)
    at org.jboss.ws.core.soap.SOAPFactoryImpl.createElement(SOAPFactoryImpl.java:143)
    at org.jboss.ws.core.soap.SOAPFactoryImpl.createElement(SOAPFactoryImpl.java:106)
    at org.jboss.ws.core.soap.EnvelopeBuilderDOM.buildBodyElementDefault(EnvelopeBuilderDOM.java:400)
    at org.jboss.ws.core.soap.EnvelopeBuilderDOM.buildSOAPBodyElement(EnvelopeBuilderDOM.java:316)
    at org.jboss.ws.core.soap.EnvelopeBuilderDOM.buildSOAPBody(EnvelopeBuilderDOM.java:246)
    at org.jboss.ws.core.soap.EnvelopeBuilderDOM.build(EnvelopeBuilderDOM.java:168)
    at org.jboss.ws.core.soap.EnvelopeBuilderDOM.build(EnvelopeBuilderDOM.java:97)
    at org.jboss.ws.core.soap.MessageFactoryImpl.createMessage(MessageFactoryImpl.java:294)
    at org.jboss.ws.core.soap.SOAPMessageUnMarshallerHTTP.read(SOAPMessageUnMarshallerHTTP.java:82)
    at org.jboss.remoting.transport.http.HTTPClientInvoker.readResponse(HTTPClientInvoker.java:608)
    at org.jboss.remoting.transport.http.HTTPClientInvoker.useHttpURLConnection(HTTPClientInvoker.java:402)
    at org.jboss.remoting.transport.http.HTTPClientInvoker.makeInvocation(HTTPClientInvoker.java:253)
    ... 9 more
Caused by: java.lang.NullPointerException
    at org.jboss.ws.extensions.xop.XOPContext.getAttachmentByCID(XOPContext.java:380)
    at org.jboss.ws.extensions.xop.XOPContext.replaceXOPInclude(XOPContext.java:330)
    ... 22 more
public class SOAPClientSAAJ {

/**
 * Starting point for the SAAJ - SOAP Client Testing
 */
public static void main(String args[]) {
    try {
        // Create SOAP Connection
        SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory.newInstance();
        SOAPConnection soapConnection = soapConnectionFactory.createConnection();   
        // Send SOAP Message to SOAP Server
        String url = "http://gemo.infocamere.it/gemows/services/GemoService";
        SOAPMessage soapRequest = createSOAPRequest();
        SOAPMessage soapResponse = soapConnection.call(soapRequest, url);

        // Process the SOAP Response
        printSOAPResponse(soapResponse);

        soapConnection.close();
    } catch (Exception e) {
        System.err.println("Error occurred while sending SOAP Request to Server");
        e.printStackTrace();
    }
}

private static SOAPMessage createSOAPRequest() throws Exception {
    MessageFactory messageFactory = MessageFactory.newInstance();

    SOAPMessage soapMessage = messageFactory.createMessage();
    SOAPPart soapPart = soapMessage.getSOAPPart();

    String serverURI = "http://ws.gemo.infocamere.it";

    // SOAP Envelope
    SOAPEnvelope envelope = soapPart.getEnvelope();
    envelope.addNamespaceDeclaration("ws", serverURI);

    // SOAP Body
    SOAPBody soapBody = envelope.getBody();
    SOAPElement richiestaRicerca = soapBody.addChildElement("richiestaRicerca", "ws");
    SOAPElement denominazione = richiestaRicerca.addChildElement("denominazione");
    SOAPElement provincia = denominazione.addChildElement("provincia");
    SOAPElement denominazioneImpresa = denominazione.addChildElement("denominazione");
    provincia.addTextNode("RM");
    denominazioneImpresa.addTextNode("infocamere");
    MimeHeaders headers = soapMessage.getMimeHeaders();

    String authorization = new sun.misc.BASE64Encoder().encode(("user"+":"+"password").getBytes());

    headers.addHeader("SOAPAction", "ricercaImprese");
    headers.addHeader("Authorization", "Basic " + authorization);
    headers.setHeader("Content-Type", "text/xml; charset=utf-8");
    soapMessage.saveChanges();

    /* Print the request message */
    System.out.print("Request SOAP Message = ");
    soapMessage.writeTo(System.out);
    System.out.println();

    return soapMessage;
}

/**
 * Method used to print the SOAP Response
 */
private static void printSOAPResponse(SOAPMessage soapResponse) throws Exception {
    TransformerFactory transformerFactory = TransformerFactory.newInstance();
    Transformer transformer = transformerFactory.newTransformer();
    Source sourceContent = soapResponse.getSOAPPart().getContent();
    System.out.print("\nResponse SOAP Message = ");
    StreamResult result = new StreamResult(System.out);
    transformer.transform(sourceContent, result);
}
<env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/' 
        xmlns:ws='http://ws.gemo.infocamere.it'>
<env:Header></env:Header>
<env:Body>
    <ws:richiestaRicerca xmlns:ws='http://ws.gemo.infocamere.it'>
        <denominazione>
            <provincia>RM</provincia>
            <denominazione>infocamere</denominazione>
        </denominazione>
    </ws:richiestaRicerca>
</env:Body>
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <ns3:rispostaRicerca xmlns:ns3="http://ws.gemo.infocamere.it" xmlns:ns2="http://beans.ws.gemo.infocamere.it">
         <dataVisura>2014-07-28+02:00</dataVisura>
         <esito>true</esito>
         <descrizione>OK</descrizione>
         <documento>
            <xop:Include href="cid:14f6d083-938f-448a-bd76-9d0bb9783a6e-20@cxf.apache.org" xmlns:xop="http://www.w3.org/2004/08/xop/include"/>
         </documento>
      </ns3:rispostaRicerca>
   </soap:Body>
</soap:Envelope>

RM
信息摄像机

和服务器响应:

    Error occurred while sending SOAP Request to Server
javax.xml.soap.SOAPException: java.io.IOException: Could not transmit message
    at org.jboss.ws.core.soap.SOAPConnectionImpl.callInternal(SOAPConnectionImpl.java:152)
    at org.jboss.ws.core.soap.SOAPConnectionImpl.call(SOAPConnectionImpl.java:64)
    at it.infocamere.leii.batch.test.SOAPClientSAAJ.main(SOAPClientSAAJ.java:31)
Caused by: java.io.IOException: Could not transmit message
    at org.jboss.ws.core.client.HTTPRemotingConnection.invoke(HTTPRemotingConnection.java:267)
    at org.jboss.ws.core.client.SOAPProtocolConnectionHTTP.invoke(SOAPProtocolConnectionHTTP.java:71)
    at org.jboss.ws.core.soap.SOAPConnectionImpl.callInternal(SOAPConnectionImpl.java:143)
    ... 2 more
Caused by: org.jboss.remoting.CannotConnectException: Can not connect http client invoker after 1 attempt(s)
    at org.jboss.remoting.transport.http.HTTPClientInvoker.makeInvocation(HTTPClientInvoker.java:271)
    at org.jboss.remoting.transport.http.HTTPClientInvoker.transport(HTTPClientInvoker.java:176)
    at org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientInvoker.java:169)
    at org.jboss.remoting.Client.invoke(Client.java:2070)
    at org.jboss.remoting.Client.invoke(Client.java:879)
    at org.jboss.ws.core.client.HTTPRemotingConnection.invoke(HTTPRemotingConnection.java:246)
    ... 4 more
Caused by: org.jboss.ws.WSException: Failed to inline XOP data
    at org.jboss.ws.extensions.xop.XOPContext.replaceXOPInclude(XOPContext.java:342)
    at org.jboss.ws.extensions.xop.XOPContext.inlineXOPData(XOPContext.java:165)
    at org.jboss.ws.core.soap.SOAPFactoryImpl.createElement(SOAPFactoryImpl.java:143)
    at org.jboss.ws.core.soap.SOAPFactoryImpl.createElement(SOAPFactoryImpl.java:106)
    at org.jboss.ws.core.soap.EnvelopeBuilderDOM.buildBodyElementDefault(EnvelopeBuilderDOM.java:400)
    at org.jboss.ws.core.soap.EnvelopeBuilderDOM.buildSOAPBodyElement(EnvelopeBuilderDOM.java:316)
    at org.jboss.ws.core.soap.EnvelopeBuilderDOM.buildSOAPBody(EnvelopeBuilderDOM.java:246)
    at org.jboss.ws.core.soap.EnvelopeBuilderDOM.build(EnvelopeBuilderDOM.java:168)
    at org.jboss.ws.core.soap.EnvelopeBuilderDOM.build(EnvelopeBuilderDOM.java:97)
    at org.jboss.ws.core.soap.MessageFactoryImpl.createMessage(MessageFactoryImpl.java:294)
    at org.jboss.ws.core.soap.SOAPMessageUnMarshallerHTTP.read(SOAPMessageUnMarshallerHTTP.java:82)
    at org.jboss.remoting.transport.http.HTTPClientInvoker.readResponse(HTTPClientInvoker.java:608)
    at org.jboss.remoting.transport.http.HTTPClientInvoker.useHttpURLConnection(HTTPClientInvoker.java:402)
    at org.jboss.remoting.transport.http.HTTPClientInvoker.makeInvocation(HTTPClientInvoker.java:253)
    ... 9 more
Caused by: java.lang.NullPointerException
    at org.jboss.ws.extensions.xop.XOPContext.getAttachmentByCID(XOPContext.java:380)
    at org.jboss.ws.extensions.xop.XOPContext.replaceXOPInclude(XOPContext.java:330)
    ... 22 more
public class SOAPClientSAAJ {

/**
 * Starting point for the SAAJ - SOAP Client Testing
 */
public static void main(String args[]) {
    try {
        // Create SOAP Connection
        SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory.newInstance();
        SOAPConnection soapConnection = soapConnectionFactory.createConnection();   
        // Send SOAP Message to SOAP Server
        String url = "http://gemo.infocamere.it/gemows/services/GemoService";
        SOAPMessage soapRequest = createSOAPRequest();
        SOAPMessage soapResponse = soapConnection.call(soapRequest, url);

        // Process the SOAP Response
        printSOAPResponse(soapResponse);

        soapConnection.close();
    } catch (Exception e) {
        System.err.println("Error occurred while sending SOAP Request to Server");
        e.printStackTrace();
    }
}

private static SOAPMessage createSOAPRequest() throws Exception {
    MessageFactory messageFactory = MessageFactory.newInstance();

    SOAPMessage soapMessage = messageFactory.createMessage();
    SOAPPart soapPart = soapMessage.getSOAPPart();

    String serverURI = "http://ws.gemo.infocamere.it";

    // SOAP Envelope
    SOAPEnvelope envelope = soapPart.getEnvelope();
    envelope.addNamespaceDeclaration("ws", serverURI);

    // SOAP Body
    SOAPBody soapBody = envelope.getBody();
    SOAPElement richiestaRicerca = soapBody.addChildElement("richiestaRicerca", "ws");
    SOAPElement denominazione = richiestaRicerca.addChildElement("denominazione");
    SOAPElement provincia = denominazione.addChildElement("provincia");
    SOAPElement denominazioneImpresa = denominazione.addChildElement("denominazione");
    provincia.addTextNode("RM");
    denominazioneImpresa.addTextNode("infocamere");
    MimeHeaders headers = soapMessage.getMimeHeaders();

    String authorization = new sun.misc.BASE64Encoder().encode(("user"+":"+"password").getBytes());

    headers.addHeader("SOAPAction", "ricercaImprese");
    headers.addHeader("Authorization", "Basic " + authorization);
    headers.setHeader("Content-Type", "text/xml; charset=utf-8");
    soapMessage.saveChanges();

    /* Print the request message */
    System.out.print("Request SOAP Message = ");
    soapMessage.writeTo(System.out);
    System.out.println();

    return soapMessage;
}

/**
 * Method used to print the SOAP Response
 */
private static void printSOAPResponse(SOAPMessage soapResponse) throws Exception {
    TransformerFactory transformerFactory = TransformerFactory.newInstance();
    Transformer transformer = transformerFactory.newTransformer();
    Source sourceContent = soapResponse.getSOAPPart().getContent();
    System.out.print("\nResponse SOAP Message = ");
    StreamResult result = new StreamResult(System.out);
    transformer.transform(sourceContent, result);
}
<env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/' 
        xmlns:ws='http://ws.gemo.infocamere.it'>
<env:Header></env:Header>
<env:Body>
    <ws:richiestaRicerca xmlns:ws='http://ws.gemo.infocamere.it'>
        <denominazione>
            <provincia>RM</provincia>
            <denominazione>infocamere</denominazione>
        </denominazione>
    </ws:richiestaRicerca>
</env:Body>
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <ns3:rispostaRicerca xmlns:ns3="http://ws.gemo.infocamere.it" xmlns:ns2="http://beans.ws.gemo.infocamere.it">
         <dataVisura>2014-07-28+02:00</dataVisura>
         <esito>true</esito>
         <descrizione>OK</descrizione>
         <documento>
            <xop:Include href="cid:14f6d083-938f-448a-bd76-9d0bb9783a6e-20@cxf.apache.org" xmlns:xop="http://www.w3.org/2004/08/xop/include"/>
         </documento>
      </ns3:rispostaRicerca>
   </soap:Body>
</soap:Envelope>

2014-07-28+02:00
符合事实的
好啊
你能帮我弄清楚我犯了什么样的错误吗

谢谢

从服务器更新原始响应

    HTTP/1.1 200 OK
Date: Tue, 29 Jul 2014 07:35:37 GMT
Server: Apache
X-Powered-By: AS Infocamere - inter2ri1
Content-Length: 2343
Vary: User-Agent
Content-Type: multipart/related; type="application/xop+xml"; boundary="uuid:d5e7e68a-3b26-42cf-8161-5731c2e26c8e"; start="<root.message@cxf.apache.org>"; start-info="text/xml"
Content-Language: it
Cache-Control: proxy-revalidate
Proxy-Connection: Keep-Alive
Connection: Keep-Alive
Set-Cookie: JSESSIONID=F4D71DD695EF94D56586331926961A0C.inter2ri1; Path=/gemows
Age: 0

--uuid:d5e7e68a-3b26-42cf-8161-5731c2e26c8e
Content-Type: application/xop+xml; charset=UTF-8; type="text/xml";
Content-Transfer-Encoding: binary
Content-ID: <root.message@cxf.apache.org>

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns3:rispostaRicerca xmlns:ns3="http://ws.gemo.infocamere.it" xmlns:ns2="http://beans.ws.gemo.infocamere.it"><dataVisura>2014-07-29+02:00</dataVisura><esito>true</esito><descrizione>OK</descrizione><documento><xop:Include xmlns:xop="http://www.w3.org/2004/08/xop/include" href="cid:79d2b999-a152-4027-85ac-2946b402a910-1@cxf.apache.org"/></documento></ns3:rispostaRicerca></soap:Body></soap:Envelope>
--uuid:d5e7e68a-3b26-42cf-8161-5731c2e26c8e
Content-Type: application/octet-stream
Content-Transfer-Encoding: binary
Content-ID: <79d2b999-a152-4027-85ac-2946b402a910-1@cxf.apache.org>

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ListaImpreseRI>
    <Impresa>
        <AnagraficaImpresa>
            <Cciaa>RM</Cciaa>
            <NRea>804877</NRea>
            <Denominazione>INFOCAMERE - SOCIETA' CONSORTILE DI INFORMATICA DELLE CAMERE DI  COMMERCIO ITALIANE PER AZIONI</Denominazione>
            <CodFisc>02313821007     </CodFisc>
            <NatGiu>SO</NatGiu>
            <DescNatGiu>SOCIETA' CONSORTILE PER AZIONI</DescNatGiu>
            <DescStatoAttivita>Attiva</DescStatoAttivita>
            <IndirizzoSede>
                <SglPrvSede>RM</SglPrvSede>
                <DescPrvSede>ROMA</DescPrvSede>
                <CodComSede>091</CodComSede>
                <DescComSede>ROMA</DescComSede>
                <CodToponSede>VIA</CodToponSede>
                <DescToponSede>VIA</DescToponSede>
                <ViaSede>GIOVANNI BATTISTA MORGAGNI</ViaSede>
                <NCivicoSede>13</NCivicoSede>
                <CapSede>00161</CapSede>
            </IndirizzoSede>
            <ClassificazioneAteco>
                <CodCodifica>07</CodCodifica>
                <DescCodifica>Classificazione ATECO RI 2007</DescCodifica>
                <CodAttivita>63.11.1</CodAttivita>
                <DescAttivita>Elaborazione dati</DescAttivita>
            </ClassificazioneAteco>
            <PartitaIva>02313821007</PartitaIva>
        </AnagraficaImpresa>
    </Impresa>
</ListaImpreseRI>

--uuid:d5e7e68a-3b26-42cf-8161-5731c2e26c8e--
HTTP/1.1200正常
日期:2014年7月29日星期二07:35:37 GMT
服务器:Apache
X-Powered-By:AS Infocamere-inter2ri1
内容长度:2343
更改:用户代理
内容类型:多部分/相关;type=“应用程序/xop+xml”;边界=“uuid:d5e7e68a-3b26-42cf-8161-5731c2e26c8e”;start=“”;start info=“text/xml”
内容语言:it
缓存控制:代理重新验证
代理连接:保持活动状态
连接:保持活力
设置Cookie:JSESSIONID=F4D71DD695EF94D56586331926961A0C.inter2ri1;路径=/gemows
年龄:0
--uuid:d5e7e68a-3b26-42cf-8161-5731c2e26c8e
内容类型:应用程序/xop+xml;字符集=UTF-8;type=“text/xml”;
内容传输编码:二进制
内容ID:
2014-07-29+02:00trueOK
--uuid:d5e7e68a-3b26-42cf-8161-5731c2e26c8e
内容类型:应用程序/八位字节流
内容传输编码:二进制
内容ID:
RM
804877
INFOCAMERE-意大利商业信息社会联盟
02313821007
所以
阿齐奥尼社会联合会
阿提瓦
RM
罗马
091
罗马
通过
通过
乔瓦尼·巴蒂斯塔·莫尔加尼
13
00161
07
2007年ATECO RI分类
63.11.1
达蒂依拉伯拉泽酒店
02313821007
--uuid:d5e7e68a-3b26-42cf-8161-5731c2e26c8e--

在添加名称空间声明之前,是否应该创建方法名称?createName(methodName)您的异常似乎表明您在消息传递中使用xop(MTOM)存在问题。来自服务器的SOAP响应表明存在内联MTOM附件。您能确认服务器实际上是在SOAP中发回内容吗?而且内容可以通过
href
中给出的名称进行寻址?实际上,我只是遵循这个工作示例[,它不使用任何信封。createName(methodName)好的。你能再解释一下为什么我必须使用这种方法吗?Hy@Kolossus,我现在只是用服务器的原始响应更新了我的答案,也许这对你来说更容易。无论如何,是的,内容可以通过
href