添加复杂类型 在 message header

         public object BeforeSendRequest(ref System.ServiceModel.Channels.Message request, System.ServiceModel.IClientChannel channel)
        {

         

            requestMessage = request.ToString();
            String guid = "";
            bool understand = false;

            //System.ServiceModel.Channels.MessageHeader header = System.ServiceModel.Channels.MessageHeader.CreateHeader("ServiceContext", @"http://schemas.microsoft.com/sharepoint/servicecontext", guid, understand);
            MyMessageHeader obj = new MyMessageHeader();
            request.Headers.Add(obj);
            return null;
        }

 

 

        public class MyMessageHeader : MessageHeader
        {

            /// This method writes all header conten in the XmlWriter.

            /// The header elemet is already writed in this writer.

            protected override void OnWriteHeaderContents(XmlDictionaryWriter writer, MessageVersion messageVersion)
            {

                writer.WriteAttributeString("name", "test");

                writer.WriteStartElement("data");

                writer.WriteString("test");

                writer.WriteEndElement();

            }
            /// The Name of the header element.

            public override string Name
            {


                get { return " ServiceContext "; }

            }

 

            /// The Namespace of the header element

            public override string Namespace
            {

                get { return @"http://schemas.microsoft.com/sharepoint/servicecontext"; }

            }

        }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Java中使用Handler机制可以对SOAP请求和响应进行拦截和处理,从而实现对SOAP消息的定制化处理。下面是一个简单的示例,演示了如何在客户端对SOAP请求包注入header,在服务端对SOAP请求包进行解析并展示头部信息: 客户端代码示例: ```java // 创建SOAP消息 MessageFactory factory = MessageFactory.newInstance(); SOAPMessage message = factory.createMessage(); // 在SOAP消息中添加Header SOAPHeader header = message.getSOAPHeader(); header.addChildElement("MyHeader").addTextNode("MyHeaderValue"); // 创建SOAP连接 SOAPConnectionFactory connectionFactory = SOAPConnectionFactory.newInstance(); SOAPConnection connection = connectionFactory.createConnection(); // 发送SOAP消息 URL endpoint = new URL("http://localhost:8080/MyWebService"); SOAPMessage response = connection.call(message, endpoint); // 关闭连接 connection.close(); ``` 服务端代码示例: ```java // 创建SOAP消息处理器 SOAPMessageHandler handler = new SOAPMessageHandler() { public boolean handleMessage(SOAPMessageContext context) { // 获取SOAP消息头部 SOAPHeader header = context.getMessage().getSOAPHeader(); if (header != null) { // 遍历SOAP头部元素 Iterator<?> it = header.getChildElements(); while (it.hasNext()) { SOAPElement element = (SOAPElement) it.next(); System.out.println("Header element name: " + element.getElementName().getLocalName()); System.out.println("Header element value: " + element.getValue()); } } return true; } }; // 注册SOAP消息处理器 Endpoint endpoint = Endpoint.create(new MyWebService()); Binding binding = endpoint.getBinding(); List<Handler> handlerChain = binding.getHandlerChain(); handlerChain.add(handler); binding.setHandlerChain(handlerChain); // 启动服务 endpoint.publish("http://localhost:8080/MyWebService"); ``` 在客户端代码中,我们首先创建了一个SOAP消息,并在其中添加了一个名为"MyHeader"的自定义头部元素。然后,我们使用SOAPConnection发送这个消息到Web服务端点。在服务端代码中,我们创建了一个SOAP消息处理器,在其中实现了对SOAP消息头部的解析和展示。最后,我们将SOAP消息处理器注册到Web服务端点的处理器链中。 当客户端发送SOAP请求包时,服务端会拦截并解析请求包,然后调用SOAP消息处理器来处理请求包头部信息。SOAP消息处理器可以读取和修改SOAP消息,然后将消息传递给下一个处理器或Web服务端点来处理。在这个示例中,我们只是简单地展示了头部信息,但实际应用中可以根据需要进行更复杂的处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值