我正在尝试使用Spring WS 2.2.2发行版的org.springframework.ws.client.core.webservicetemplate类来使用基于SOAP的Web服务,如下所示:
webservicetemplate.setDefaultUri(uri);
webservicetemplate.setMessageSender(new SOAPMessageSenderWithAuth());
res = (RESPONSE) webservicetemplate.marshalSendAndReceive(request);
Web服务已经使用SOAP UI成功测试,但是当使用Java访问它时,Exception“SoapMessageCreationException:无法从InputStream创建消息:无法从给定源创建信封(saaj0511)”和“无法从给定源创建信封,因为root元素未命名为’Envelope'(saaj0514)“.
有没有人对此例外有任何建议?
提前致谢!
webservicetemplate的Spring bean定义如下:
webservicetemplate" class="org.springframework.ws.client.core.webservicetemplate"
p:marshaller-ref="jaxbMarshaller"
p:unmarshaller-ref="jaxbMarshaller"
p:defaultUri="...">
例外情况是:
org.springframework.ws.soap.soapMessageCreationException:无法从InputStream创建消息:无法从给定的源创建信封:;嵌套异常是com.sun.xml.internal.messaging.saaj.soAPExceptionImpl:无法从给定源创建包络
这是使用Spring WS模板的Web服务客户端的类:
import javax.annotation.Resource;
import org.apache.log4j.Logger;
import org.springframework.ws.client.WebServiceIOException;
import org.springframework.ws.client.core.webservicetemplate;
import com.myproject.soap.client.services.soAPWebServiceClient;
/**
*
* @param aram webservicetemplate")
private webservicetemplate webservicetemplate;
@Override
public RESPONSE sendAndReceive(final REQUEST request,final String uri)
{
LOG.info("SOAP URL-" + uri);
LOG.info("REQUEST-" + request.toString());
RESPONSE res = null;
try
{
res = (RESPONSE) webservicetemplate.marshalSendAndReceive(uri,request);
}
catch (final WebServiceIOException e)
{
e.printstacktrace();
LOG.error("Service with URI: " + uri + " is unreachable");
}
return res;
}
}
public MYDATAResponse createCustomer(final MYDATA request)
{
return (MYDATAResponse) soapWebServiceClient.sendAndReceive((REQUEST) request,getCreateCustomerURI());
}
最佳答案