`

webservice给soapenv:Envelope 添加自定义的命名空间

阅读更多
soap:Head 自定义命名空间:xw ,使用handler处理消息头

<soap:Head>
    <xw:arg0 ></xw:arg0>
</soap:Head>

1.配置Handler
<jaxws:endpoint id="queryUserAddr" address="/queryUserAddr" implementorClass="cn.interfaces.IQueryUser">
    <jaxws:implementor>
    <bean id="queryUserImpl" class="cn.interfaces.impl.QueryUserImpl">
    </bean>
    </jaxws:implementor>
    <jaxws:handlers>
            <bean class="cn.interfaces.impl.PreHeaderHandler"></bean>
        </jaxws:handlers>
    </jaxws:endpoint>

2.Handler
//<soapenv:Header>里面的元素添加命名空间
public class PreHeaderHandler implements SOAPHandler<SOAPMessageContext> {
  
         public  PreHeaderHandler(){
             System.out.println("用户验证成功........................");
         }
       
        public boolean handleMessage(SOAPMessageContext context) {
            Boolean isRequest = (Boolean) context.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
            QName usernameQName = new QName("http://cc.haoren.com/services", "UsernameToken","xw");

            if (isRequest) {
                try {
                    SOAPMessage soapMsg = context.getMessage();
                    SOAPEnvelope soapEnv = soapMsg.getSOAPPart().getEnvelope();
                    SOAPHeader soapHeader = soapEnv.getHeader();
                    soapEnv.addNamespaceDeclaration("web", "http://cc.haoren.com/services");
                    //if no header, add one
                    if (soapHeader == null) {
                        soapHeader = soapEnv.addHeader();
                    }
                
                       String username = "xxx";
                       String password = "xxxx";
          
                       //添加UsernameToken
                       SOAPHeaderElement usernameHeaderElement = soapHeader.addHeaderElement(usernameQName);
                       usernameHeaderElement.addTextNode(username);
                       soapMsg.saveChanges();
                } catch (SOAPException e) {
                e.printStackTrace();
                } catch (Exception e) {
                e.printStackTrace();
                }
            }
            return true;
        }

        public Set<QName> getHeaders() {
            return null;
        }

        public boolean handleFault(SOAPMessageContext context) {
            return false;
        }

        public void close(MessageContext context) {}
    }


NodeList list=soapBody.getChildNodes();
int count=list.getLength();
Node node=null;
for(int i=0;i<count;i++) {
    node=list.item(i);
    node.setPrefix("xx");
}

分享到:
评论

相关推荐

    webservice Soap和XFire2种方式代码列子

    &lt;/soapenv:Envelope&gt; &lt;!-- SOAP Response --&gt; &lt;soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://example.com/service"&gt; &lt;soapenv:Header/&gt; &lt;soapenv:Body&gt; &lt;ser...

    获取手机归属地代码

    为了发送这个SOAP请求并接收响应,你可以使用各种编程语言的库,例如Python的suds库,Java的JAX-WS,或是.NET框架中的System.Web.Services命名空间。这些库可以帮助你构建SOAP请求,处理响应,并解析返回的XML数据。...

    ESB接入接出技术规范(超实用)

    服务端提供的WebService的地址、命名空间、操作名、参数名等信息都可以在document.properties文件中进行配置。 2. 客户端开发 客户端开发可以使用HTTP协议头传递或SOAP Header传递两种方式来访问ESB。在HTTP协议头...

    webservice 调用实例soap协议

    这里的`urn:example`和`yourOperation`需要替换为实际的命名空间和服务操作。 2. **发送SOAP请求**:使用Web服务客户端库,如Java的JAX-WS或.NET的SOAP Toolkit,可以将这个XML请求通过HTTP POST方法发送到Web服务...

    模拟soapui调用webservice

    在IT行业中,Web服务是应用程序之间进行通信的一种标准方法,而SOAP(Simple Object Access Protocol)是一种基于XML的协议,常用于构建Web服务。...String soapRequest = "&lt;soapenv:Envelope xmlns:soapenv=\...

    HttpClient 调用WebService示例

    在本文中,我们将深入探讨如何使用HttpClient调用WebService。 首先,调用WebService通常涉及SOAP(Simple Object Access Protocol)或RESTful API... String soapRequestBody = "&lt;soapenv:Envelope xmlns:soapenv=\...

    Java访问.Net Webservice 通过httpclient SOAP实现

    &lt;/soapenv:Envelope&gt; ``` 2. **配置HTTPClient**:接着,我们需要使用Apache的HTTPClient库来发送这个SOAP请求。首先,引入HTTPClient的相关依赖,确保项目中包含httpclient和httpcore的jar包。然后,创建...

    webservice+xml新手实例

    &lt;soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://www.example.org/webService"&gt; &lt;soapenv:Header/&gt; &lt;soapenv:Body&gt; &lt;web:calculate&gt; &lt;!-- 具体参数 --&gt; ...

    Android Retrofit2+Okhttp3+Rxjava通过SOAP协议请求WebService

    + "&lt;/soapenv:Envelope&gt;"; } ``` 最后,当服务器返回响应时,我们在订阅的回调中解析XML响应,根据业务需求进行后续处理。注意,由于SOAP响应通常也是XML格式,可能需要使用如`org.xmlpull.v1.XmlPullParser`或第...

    SOAP与Java编程指南SOAP与Java编程指南

    &lt;/soapenv:Envelope&gt; ``` **二、Java与SOAP** 在Java中,使用**JAX-WS (Java API for XML Web Services)**框架可以方便地创建和消费SOAP服务。JAX-WS提供了一种声明式的方式来定义服务接口和服务实现,并自动生成...

    webService入门

    Web服务(WebService)是一种基于互联网的、平台独立的交互方式,允许不同的应用程序之间进行通信和数据交换。在本文中,我们将深入探讨Web服务的基础知识,包括客户端和服务器端的交互、参数传递、以及如何使用JDBC...

    js调用WEBSERVICE通用函数(JAVA OR .NET)

    JavaScript调用WebService是一种常见的跨平台通信方式,尤其在Web应用程序中,它允许前端代码与后端服务进行数据交互。本文将详细介绍如何使用JavaScript调用基于Java的WebService(使用Xfire框架)以及调用基于.NET...

    httpclient实现webservice客户端

    + "&lt;/soapenv:Envelope&gt;"; httpPost.setEntity(new StringEntity(soapRequestBody, "UTF-8")); httpPost.setHeader("Content-Type", "text/xml; charset=UTF-8"); // 执行请求 CloseableHttpResponse response...

    Android 基于 Retrofit2+Okhttp3 通过SOAP协议请求WebService

    在这个例子中,`SoapResponse`是自定义的响应模型类,用于解析服务器返回的SOAP响应XML。 然后,创建一个OkHttp的拦截器,用于设置SOAPAction头信息,因为SOAP请求需要这个头来识别请求类型: ```java public class...

    金蝶调用Webservice接口-SOAP

    这通过`Service.create()`方法完成,传入WSDL(Web Services Description Language)URL和QName( Qualified Name)来定义服务的命名空间和本地名称。例如: ```java String ns = "http://ws.sitech.com"; String ...

    独立运行的webservice服务

    将CXF的库添加到你的项目类路径中,可以通过Maven或Gradle依赖管理来实现。 **2. 创建Web服务接口** 使用Apache CXF,你需要定义一个Java接口,这个接口将作为你的Web服务的契约。接口中的方法将成为Web服务的端点...

    How to Use JS Calling A WebService By Post Both SOAP And JSON

    &lt;soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://webservice.example.com"&gt; &lt;soapenv:Header/&gt; &lt;soapenv:Body&gt; &lt;web:yourMethod&gt; &lt;!--Your input parameters ...

    webservice启动没有问题,通过自动生成的客户端报错

    faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException faultSubcode: faultString: java.lang.reflect.InvocationTargetException faultActor: faultNode: faultDetail: {...

    WebService (一) CXF 入门 HelloWorld

    **WebService (一) CXF 入门 HelloWorld** 在IT行业中,WebService是一种基于开放标准(如XML、WSDL和SOAP)的互联网通信协议,允许不同系统之间的应用程序进行互操作。本篇将详细介绍如何使用Apache CXF框架来创建...

Global site tag (gtag.js) - Google Analytics