`
7wolfs
  • 浏览: 182788 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

使用Spring 的Interceptor 机制读取SOAP header时,需要注意的问题

阅读更多
使用Spring Interceptor 机制读取Web Service 的SOAP请求时,由于在SOAP请求里,xml的元素之间可能会包含空格、回车符、制表符,所以在用dom node读取SOAP xml时,需要对读取的当前元素的类型作判断。判断当前元素的类型是ELEMENT_NODE 还是 TEXT_NODE.

处理SOAP请求时,涉及到了如下三种dom的操作方式,
1. org.springframework.ws.context.MessageContext
2. javax.xml.transform.dom.DOMResult
3. org.w3c.dom.NodeList, org.w3c.dom.Node

代码如下:
public boolean handleRequest(MessageContext messageContext, Object endpoint)
			throws Exception {
		// TODO Auto-generated method stub
		Assert.isInstanceOf(SoapMessage.class, messageContext.getRequest());
		SoapMessage request = (SoapMessage) messageContext.getRequest();
        SoapHeader header = request.getSoapHeader();

        String username = "";
        String password = "";
        for (Iterator iterator = header.examineAllHeaderElements(); iterator.hasNext();) {
			SoapHeaderElement headerElement = (SoapHeaderElement) iterator.next();
			NodeList children = ((DOMResult)headerElement.getResult()).getNode().getChildNodes();
			for (int i = 0; i < children.getLength(); i++) {
				if (children.item(i).getNodeType() == Node.ELEMENT_NODE) { 
					Node node = (Node) children.item(i);
					if ("se:user".equalsIgnoreCase(node.getNodeName())) {
						username = node.getChildNodes().item(0).getTextContent();
					} else if ("se:pass".equalsIgnoreCase(node.getNodeName())) {
						password = node.getChildNodes().item(0).getTextContent();
					}
				} else if (children.item(i).getNodeType() == Node.TEXT_NODE) {
	
				} 
			}

		}

		return true;
	}



0
0
分享到:
评论

相关推荐

    使用CXF实现带header的soap服务

    标题“使用CXF实现带header的soap服务”指的是在Java环境中,通过Apache CXF框架创建一个SOAP(简单对象访问协议)服务,同时处理带有HTTP头部信息的请求。Apache CXF是一个开源的服务框架,它允许开发者构建和消费...

    spring boot加入拦截器Interceptor过程解析

    本文将详细介绍 Spring Boot 中的拦截器Interceptor机制的配置和使用。 一、Spring Boot 中的拦截器Interceptor机制 在 Spring Boot 框架中,拦截器Interceptor是通过实现 HandlerInterceptor 接口来实现的。...

    利用反射和动态代理机制实现自定义拦截器Interceptor

    利用反射和动态代理机制实现自定义拦截器Interceptor 在本文中,我们将探讨如何利用反射和动态代理机制来实现自定义拦截器Interceptor。拦截器Interceptor是一种常见的设计模式,用于在方法调用前后执行某些操作,...

    详解Retrofit Interceptor(拦截器) 拦截请求并做相关处理

    在使用 Interceptor 时,我们需要将其添加到 Retrofit 客户端中。下面是一个简单的示例代码: ```java Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://api.example.com/") .addInterceptor(new ...

    springAOP与Interceptor

    SpringAOP与SpringMVC拦截器两种方式实现权限管控,前台xml读取配置根据登录用户判断button是否enable

    Interceptor框架的实现

    Interceptor框架在软件开发中起着关键作用,尤其是在Java企业级应用中,如Spring AOP(面向切面编程)和各种框架中的拦截器机制。本文将深入探讨Interceptor框架的实现,主要涉及Java代理和反射技术。 首先,理解...

    spring boot jwt Interceptor 例子

    spring boot jwt 和 interceptor的例子。 其中jwt的例子网上有很多,但是都是要数据库支持,这个只是用假数据模拟,不需要数据库支持。另外还有一个拦截器的简单例子。已经在sts 4 测试通过。

    CXF 添加soap 头部信息.zip_CXF增加soap头验证_bluex8z_cxf_meltedkw7_soap信息头

    综上所述,通过Apache CXF提供的Interceptor机制,我们可以方便地在SOAP消息中添加、读取和验证自定义头部信息,从而增强Web服务的安全性和功能。在实际项目中,务必根据具体需求和安全策略来设计和实现SOAP头的处理...

    Spring Boot Aspect 切面 AOP 拦截器 Interceptor 监控control请求耗时

    为了启用AOP并使用自定义的拦截器,我们需要在Spring Boot应用中添加相关依赖。通常,Spring Boot默认集成了Spring AOP,因此只需确保`spring-boot-starter-aop`已经在`pom.xml`或`build.gradle`文件中被包含。 ...

    SpringMVC中使用Interceptor拦截器

    总的来说,Interceptor是Spring MVC提供的一种灵活的扩展机制,它增强了应用程序的功能,使得开发者能够以一种模块化的方式处理各种跨切面的业务需求。通过合理利用Interceptor,可以提高代码的可复用性和可维护性,...

    postman interceptor

    1. **实时同步**:Interceptor能够实时同步浏览器或应用中的网络请求到Postman,这意味着你可以在浏览器中浏览网页或使用应用时,Interceptor会捕获所有的HTTP请求,并将它们传送到Postman中,方便进行进一步的分析...

    Postman-Interceptor-V1.1.2.zip

    在"readme.txt"文件中,通常会包含Interceptor的使用指南、更新日志和可能遇到的问题及解决方案。建议在安装和使用前仔细阅读此文件,以确保顺利进行。 总之,Postman Interceptor是API开发者和测试人员的强大工具...

    springmvc-interceptor

    在Spring MVC框架中,拦截器(Interceptor)是一个至关重要的组件,它允许开发者在请求处理之前、之后或在处理过程中执行自定义逻辑。拦截器可以用于实现日志记录、权限检查、性能统计、事务管理等多种功能,极大地...

    接口测试插件 Postman Interceptor 1.1.1

    **接口测试插件 Postman Interceptor 1.1.1** 接口测试是软件开发过程中的重要环节,它确保了不同系统、服务或组件之间的通信功能正常。Postman是一款广泛使用的接口测试工具,提供了丰富的功能来简化和自动化接口...

    使用CXF Interceptor&Feature

    创建自定义Interceptor时,需要继承`AbstractPhaseInterceptor`或其子类,并实现相应的方法。对于Feature,我们需要继承`AbstractFeature`,并覆盖`configure`方法来设置所需的配置。 在`src`目录下,通常会包含...

    mybatis interceptor

    在本例中,我们探讨的是如何使用 MyBatis Interceptor 来实现分页功能,这对于处理大数据量的查询是至关重要的。 首先,我们需要了解 MyBatis Interceptor 的工作原理。Interceptor 类似于 Java 中的 AOP(面向切面...

    Java 模拟Interceptor 过程

    Interceptor广泛应用于框架如Spring、MyBatis等,用于实现事务管理、日志记录、权限控制等功能。在本篇文章中,我们将探讨如何在没有现成框架支持的情况下,模拟实现一个简单的Interceptor过程。 首先,我们需要...

    谷歌浏览器插件—— Ajax Interceptor

    使用Ajax Interceptor 安装Ajax Interceptor后,它会在浏览器右上角出现图标,点击后显示当前页面所有正在进行的Ajax请求。你可以选择某个请求,查看其详细信息,包括URL、HTTP方法、请求头、请求体等,并对其进行...

Global site tag (gtag.js) - Google Analytics