热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

webservice系统学习笔记6使用soap的header传递消息

1、显示的使用soap的header传递消息(不推荐使用,会破坏正常的代码结构,推荐使用handler处理)WebResult(namedeleteR

1、显示的使用soap的header传递消息(不推荐使用,会破坏正常的代码结构,推荐使用handler处理)

@WebResult(name="deleteResult")public boolean deleteUser(@WebParam(header=true,name="adminName")String adminName,@WebParam(name="deleteName")String delName);

@Overridepublic boolean deleteUser(String adminName, String delName) {return true;}

wsdl:

xsd文件

调用代码:

 

/*** 使用了SOAP的hearder来传递消息(缺点:会改变方法的参数定义)*/@Testpublic void test4(){try {String namespace = "http://ws01.yzl.com/";String wsdlUrl = "http://localhost:8888/ws01?wsdl";//1、创建服务(Service)URL url = new URL(wsdlUrl);QName qname = new QName(namespace,"MyServiceImplService");Service service = Service.create(url, qname);//2、创建Dispatch//public interface Dispatchextends BindingProviderDispatch 接口提供对动态调用服务端点操作的支持。javax.xml.ws.Service 接口作为创建 Dispatch 实例的工厂。 Dispatch dispatch = service.createDispatch(new QName(namespace,"MyServiceImplPort"), SOAPMessage.class, Service.Mode.MESSAGE);//3.1、创建SOAPMessageSOAPMessage message = MessageFactory.newInstance().createMessage();SOAPEnvelope envelope = message.getSOAPPart().getEnvelope();SOAPBody body = envelope.getBody();//3.2、处理header信息SOAPHeader header = envelope.getHeader();if(header==null) header = envelope.addHeader();QName hname = new QName(namespace,"adminName","nn");header.addHeaderElement(hname).setValue("administrator");//4、创建QName来指定消息中传递数据QName ename = new QName(namespace,"deleteUser","nn");body.addBodyElement(ename);message.writeTo(System.out);
  System.out.println();
//5、通过Dispatch传递消息,并返回响应消息SOAPMessage returnMessage = dispatch.invoke(message);returnMessage.writeTo(System.out);//打印返回消息
System.out.println();//5、解析返回的SOAP消息的XMLDocument doc = returnMessage.getSOAPBody().extractContentAsDocument();//Document doc = returnMessage.getSOAPPart().getEnvelope().getBody().extractContentAsDocument();String result = doc.getElementsByTagName("deleteResult").item(0).getTextContent();System.out.println("result is :" + result);} catch (Exception e) {e.printStackTrace();}}

 结果:

<SOAP-ENV:Envelope xmlns:SOAP-ENV&#61;"http://schemas.xmlsoap.org/soap/envelope/">
  <
SOAP-ENV:Header><nn:adminName xmlns:nn&#61;"http://ws01.yzl.com/">administratornn:adminName>SOAP-ENV:Header>
  <
SOAP-ENV:Body><nn:deleteUser xmlns:nn&#61;"http://ws01.yzl.com/"/>SOAP-ENV:Body>
SOAP-ENV:Envelope>
<S:Envelope xmlns:S&#61;"http://schemas.xmlsoap.org/soap/envelope/">
  <
S:Header/>
  <
S:Body>
    <
ns2:deleteUserResponse xmlns:ns2&#61;"http://ws01.yzl.com/"><deleteResult>truedeleteResult>ns2:deleteUserResponse>
  S:Body>
S:Envelope>
result is :true


转:https://www.cnblogs.com/yangzhilong/p/3302693.html



推荐阅读
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文讨论了在Spring 3.1中,数据源未能自动连接到@Configuration类的错误原因,并提供了解决方法。作者发现了错误的原因,并在代码中手动定义了PersistenceAnnotationBeanPostProcessor。作者删除了该定义后,问题得到解决。此外,作者还指出了默认的PersistenceAnnotationBeanPostProcessor的注册方式,并提供了自定义该bean定义的方法。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
author-avatar
海淀区小张_703
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有