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>
}
我尝试将生成的代码放入SOAPMessagesoapRequest
中的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