微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – 无法从给定的源创建信封

我正在尝试使用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服务的WSDL文件生成的类构建的.

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;
    }
}

方法sendAndReceive被调用如下:

public MYDATAResponse createCustomer(final MYDATA request)
    {
        return (MYDATAResponse) soapWebServiceClient.sendAndReceive((REQUEST) request,getCreateCustomerURI());
    }
最佳答案
如果在解析服务响应时遇到异常,请尝试从soap UI发送请求并检查它是否正常工作.
如果它在肥皂ui工作而不在这里,那么你没有得到适当的反应,这可能是因为不正确的要求.
在我的情况下,问题是我的端点url在代码中由“?wsdl”组成.去除后它工作得非常好.

原文地址:https://www.jb51.cc/spring/432132.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐