cxf WebService设置wsdl中soapAction的值

cxf WebService设置wsdl中soapAction的值
cxf WebService设置wsdl中soapAction的值

cxf WebService设置wsdl中soapAction的值

用cxf开发一个WebService很简单,只需要下面几步:

1.定义接口

public interface HelloService {

String hello();

}

2.实现

public class HelloServiceImpl implements HelloService {

@Override

public String hello() {

return "hi,my name is gyoung ";

}

}

3.用ServerFactoryBean生成服务

复制代码

public static void main(String[] args) {

HelloServiceImpl helloworldImpl = new HelloServiceImpl();

//cxf发布服务的工厂bean

ServerFactoryBean svrFactory = new ServerFactoryBean();

//设置服务类

svrFactory.setServiceClass(HelloService.class);

//设置服务地址

svrFactory.setAddress("http://localhost:9001/Hello");

//设置服务bean

svrFactory.setServiceBean(helloworldImpl);

svrFactory.create();

}

复制代码

这样,一个简单的HelloWorld服务便生成成功了。

但是,这样生成的服务有一个问题,wsdl中的soapAction属性是空的

复制代码

复制代码

这一段,如果是.net生成的服务,soapAction是有值的

复制代码

复制代码

查看了很久的源码,才发现,设置cxf设置soapAction是在org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean类中

它会去循环遍历serviceConfigurations,调用其getAction方法来获取action的值。但初始的serviceConfigurations只有DefaultServiceConfiguration和SoapBindingServiceConfiguration,这两个类都没有实现其基类AbstractServiceConfiguration中的getAction方法。所以getAction返回值是空,所以wsdl中的soapAction值也会是空。找到问题就好办了,我们在serviceConfigurations 中增加一个config,在AbstractServiceConfiguration的众多子类中,我发现MethodNameSoapActionServiceConfiguration有继承getAction方法,所以我们只需要在生成服务的时候,增加一个MethodNameSoapActionServiceConfiguration

配置就行了。

复制代码

public static void main(String[] args) {

HelloServiceImpl helloworldImpl = new HelloServiceImpl();

//cxf发布服务的工厂bean

ServerFactoryBean svrFactory = new ServerFactoryBean();

svrFactory.getServiceFactory().getConfigurations().add(new MethodNameSoapActionServiceConfiguration());

//设置服务类

svrFactory.setServiceClass(HelloService.class);

//设置服务地址

svrFactory.setAddress("http://localhost:9001/Hello");

//设置服务bean

svrFactory.setServiceBean(helloworldImpl);

svrFactory.create();

}

复制代码

最张生成的wsdl

复制代码

复制代码

当然,我们也可以自己继承AbstractServiceConfiguration来实现getAction方法。

初中命题练习题

初中命题练习题 1、下列命题中,正确的命题是 A.一组对边平行另一组对边相等的四边形是平行四边形 B.对角线相等的平行四边形是矩形 C.对角线互相垂直且相等的四边形是菱形 D.相似图形一定是位似图形 2、下列命题正确的是 A.对角线垂直且相等的四边形是菱形 B.对角线相等的四边形是矩形 C.一组对边平行,一组邻角互补的四边形是平行四边形 D.对角线相等的梯形是等腰梯形 3、下列命题中,正确的命题是 A.一组对边平行但不相等的四边形是梯形 B.对角线相等的平行四边形是正方形 C.有一个角相等的两个等腰三角形相似 D.一组对边相等,另一组对边平行的四边形是平行四边形 4、下列命题,错误的命题是 A.对角线相等的四边形是矩形 B.矩形的对角线相等

C.平行四边形的两组对边分别相等 D.两组对边分别相等的四边形是平行四边形 5、下列命题中,不正确的是 A.一组邻边相等的矩形是正方形 B.等腰梯形的对角线相等 C.直角三角形斜边上的高等于斜边的一半 D.圆既是轴对称图形,又是中心对称图形、下列命题为真命题的是 A.同位角相等 B.如果∠A+∠B+∠C=180°,那么∠A,∠B,∠C互补 C.邻补角是互补的角D.两个锐角的和是锐角 A.等腰梯形的对角线相等 B.一组对边平行,一组对角相等的四边形是平行四边形 C.一组邻角互补的四边形是平行四边形 D.平行四边形的对角线互相平分 8、下列各命题中,属于假命题的是 A.若m﹣n=0,则m=n=0 B.若m﹣n>0,则m>n C.若m﹣n<0,则m<n D.若m﹣n≠0,则m≠n 9、下列命题是假命题的是 A.互补的两个角不能都是锐角B.两直线平行,同位角相等 C.若a∥b,a∥c,则b∥cD.同一平面内,若a⊥b,

gsoap2.8.11实现onvif discover详细教程

感谢 以下教程基本是(沙漠之鸽)给予我的指导的整理而来,他非常耐心的提供了帮助,也是受于他的分享精神,所以写下了这遍教程。 前言: 做onvif的过程十分痛苦,什么wsdl,soap,webserver,全部都是没有接触过的,还好有gsoap可以用,在网上和群共享里面只有2.8.3版本实现过程,而且比较麻烦的是要自己实现probe所有细节。 在2.8.11中,wsddapi插件为我们设计好了wsdd的接口,我们要做的就是填充brobe的matches信息就可以了。简化了开发过程,也不必用高手们做的typemap 文件,因为这些看不懂的文件让我们对做出的程序毫无信心。 生成.h文件。 我们需要从onvif官网下载wsdl文件,和onvif.xsd文件。然后生成.h文件 wsdl2h -sck -t /opt/nfshost/gsoap-2.8/gsoap/typemap.dat -o onvif.h analytics.wsdl analyticsdevice.wsdl devicemgmt.wsdl display.wsdl event.wsdl imaging.wsdl media.wsdl ptz.wsdl receiver.wsdl recording.wsdl remotediscovery.wsdl replay.wsdl search.wsdl deviceio.wsdl 这一步你会发现生成速度非常慢,还会提示找不到onvif.xsd,速度慢得原因是wsdl2h会根据wsdl中引用去网上下载一下xsd和wsdl文件,我们可以将这些文件下载到本地,然后修改wsdl中的路径。 修改之前schemaLocation是一个url,如果你放的和你onvif的wsdl文件相同的目录中,这样写就ok了,如果不是,可以写上相对路径。

1.下列哪一项说法是错误的()

1.下列哪一项说法是错误的() A.酶的活性是指酶催化一定化学反应的能力 B.温度、pH和酶的抑制剂等条件会影响果胶酶的活性 C.果胶酶是能催化果胶分解,从而提高水果的出汁率并使果汁变得澄清的一种酶 D.生产果汁时,为了使果胶酶得到充分的利用,节约成本,需要控制好酶的用量 解析:酶是一种生物催化剂,其活性的发挥受温度、pH和酶抑制剂的影响。果胶酶是一类酶的总称,而不是一种酶,用于果汁生产中,可增加果汁产量,提高果汁透明度。 酶浓度过高,不会增加果汁产量,反而会影响果汁品质,增加成本。 答案:C 2.某同学为探究温度对果胶酶活性的影响,在不同温度下,将等量的果胶酶加入到等量的苹果泥中,在反应同样时间后,再将反应液过滤同样时间,用量筒测定滤出苹果汁的体积。下列曲线图能正确反映实验结果的是() 解析:果胶酶在0℃时活性较低,但也能催化苹果泥形成果汁,果汁量不为0。随着温度升高果胶酶的活性升高,果汁量增加。当超过最适温度时,果胶酶活性降低,果汁量减少,正确的曲线应是B 答案:B 3.某同学进行“加酶洗衣粉和普通洗衣粉的洗涤效果比较”课题研究。下列叙述错误的是() A.设计对照实验,分别使用蛋白酶洗衣粉和复合酶洗衣粉 B.洗衣粉用量、污渍种类和洗涤温度等无关变量全部相同且适宜 C.可根据污渍完全洗净所需时间的差异得出实验结论 D.应设计一个既不用加酶洗衣粉洗涤也不用普通洗衣粉洗涤的对照 解析:在解答本题时,首先应弄清楚实验的目的。本实验的目的是比较加酶洗衣粉和普通洗衣粉的洗涤效果,自变量为洗衣粉的种类(即加酶洗衣粉和普通洗衣粉),而A选项给予的都是加酶洗衣粉,故错误。除了自变量,凡是影响该实验结果的因素(如洗衣粉

最新初中数学命题与证明的易错题汇编附答案

最新初中数学命题与证明的易错题汇编附答案 一、选择题 1.下列命题中,正确的命题是() A.度数相等的弧是等弧 B.正多边形既是轴对称图形,又是中心对称图形 C.垂直于弦的直径平分弦 D.三角形的外心到三边的距离相等 【答案】C 【解析】 【分析】 根据等弧或垂径定理,正多边形的性质一一判断即可; 【详解】 A、完全重合的两条弧是等弧,错误; B、正五边形不是中心对称图形,错误; C、垂直于弦的直径平分弦,正确; D、三角形的外心到三个顶点的距离相等,错误; 故选:C. 【点睛】 此题考查命题与定义,正多边形的性质,解题的关键是熟练掌握基本知识,属于中考常考题型. 2.下列命题是真命题的是() A.若两个数的平方相等,则这两个数相等B.同位角相等 C.同一平面内,垂直于同一直线的两条直线平行D.相等的角是对顶角 【答案】C 【解析】 【分析】 根据平方的意义,同位角的概念,平行线的判定,对顶角的概念逐一进行判断即可得.【详解】 A.若两个数的平方相等,则这两个数不一定相等,如22=(-2)2,但2≠-2,故A选项错误; B.只有两直线平行的情况下,才有同位角相等,故B选项错误; C.同一平面内,垂直于同一直线的两条直线平行,真命题,符合题意; D.相等的角不一定是对顶角,如图,∠1=∠2,但这两个角不符合对顶角的概念,故D选项错误,

故选C. 【点睛】 本题考查了命题真假的判定,涉及了乘方、同位角、对顶角、平行线的判定等知识,熟练掌握相关知识是解题的关键. 3.下列命题是假命题的是() A.同角(或等角)的余角相等 B.三角形的任意两边之和大于第三边 C.三角形的内角和为180° D.两直线平行,同旁内角相等 【答案】D 【解析】 【分析】 利用余角的定义、三角形的三边关系、三角形的内角和及平行线的性质分别判断后即可确定正确的选项. 【详解】 A、同角(或等角)的余角相等,正确,是真命题; B、三角形的任意两边之和大于第三边,正确,是真命题; C、三角形的内角和为180°,正确,是真命题; D、两直线平行,同旁内角互补,故错误,是假命题, 故选D. 【点睛】 考查了命题与定理的知识,解题的关键是了解余角的定义、三角形的三边关系、三角形的内角和及平行线的性质,难度不大. 4.下列命题中逆命题是假命题的是() A.如果两个三角形的三条边都对应相等,那么这两个三角形全等 B.如果a2=9,那么a=3 C.对顶角相等 D.线段垂直平分线上的任意一点到这条线段两个端点的距离相等 【答案】C

WSDL文件结构详解

wsdl文件结构分析 WSDL (Web Services Description Language,Web服务描述语言)是一种XML Application,他将Web服务描述定义为一组服务访问点,客户端可以通过这些服务访问点对包含面向文档信息或面向过程调用的服务进行访问(类似远程过程调用)。WSDL首先对访问的操作和访问时使用的请求/响应消息进行抽象描述,然后将其绑定到具体的传输协议和消息格式上以最终定义具体部署的服务访问点。相关的具体部署的服务访问点通过组合就成为抽象的Web服务。本文将详细讲解WSDL文档的结构,并分析每个元素的作用。 一:WSDL定义 WSDL是一个用于精确描述Web服务的文档,WSDL文档是一个遵循WSDL XML模式的XML文档。WSDL 文档将Web服务定义为服务访问点或端口的集合。在 WSDL 中,由于服务访问点和消息的抽象定义已从具体的服务部署或数据格式绑定中分离出来,因此可以对抽象定义进行再次使用:消息,指对交换数据的抽象描述;而端口类型,指操作的抽象集合。用于特定端口类型的具体协议和数据格式规范构成了可以再次使用的绑定。将Web访问地址与可再次使用的绑定相关联,可以定义一个端口,而端口的集合则定义为服务。 一个WSDL文档通常包含7个重要的元素,即types、import、message、portType、operation、binding、 service元素。这些元素嵌套在definitions 元素中,definitions是WSDL文档的根元素。文章的下一部分将会详细介绍WSDL 的基本结构。 二:WSDL的基本结构--概述 如第一部分最后描述的那样,一个基本的WSDL文档包含7个重要的元素。下面将分别介绍这几个元素以及他们的作用。 WSDL 文档在Web服务的定义中使用下列元素: · Types - 数据类型定义的容器,它使用某种类型系统(一般地使用XML Schema中的类型系统)。 · Message - 通信消息的数据结构的抽象类型化定义。使用Types所定义的类型来定义整个消息的数据结构。 · Operation - 对服务中所支持的操作的抽象描述,一般单个Operation描述了一个访问入口的请求/响应消息对。 · PortType - 对于某个访问入口点类型所支持的操作的抽象集合,这些操作可以由一个或多个服务访问点来支持。

(易错题精选)初中数学命题与证明的易错题汇编及答案

(易错题精选)初中数学命题与证明的易错题汇编及答案 一、选择题 1.下列命题正确的是() A.矩形对角线互相垂直 x= B.方程214 =的解为14 x x C.六边形内角和为540° D.一条斜边和一条直角边分别相等的两个直角三角形全等 【答案】D 【解析】 【分析】 由矩形的对角线互相平分且相等得出选项A不正确; 由方程x2=14x的解为x=14或x=0得出选项B不正确; 由六边形内角和为(6-2)×180°=720°得出选项C不正确; 由直角三角形全等的判定方法得出选项D正确;即可得出结论. 【详解】 A.矩形对角线互相垂直,不正确; B.方程x2=14x的解为x=14,不正确; C.六边形内角和为540°,不正确; D.一条斜边和一条直角边分别相等的两个直角三角形全等,正确; 故选D. 【点睛】 本题考查了命题与定理、矩形的性质、一元二次方程的解、六边形的内角和、直角三角形全等的判定;要熟练掌握. 2.下列命题中逆命题是假命题的是() A.如果两个三角形的三条边都对应相等,那么这两个三角形全等 B.如果a2=9,那么a=3 C.对顶角相等 D.线段垂直平分线上的任意一点到这条线段两个端点的距离相等 【答案】C 【解析】 【分析】 首先写出各命题的逆命题(将每个命题的题设与结论调换),然后再证明各命题的正误.因为相等的角不只是对顶角,所以此答案是假命题,继而得到正确答案. 【详解】 解:A、逆命题为:如果两个三角形全等,那么这两个三角形的三条边都对应相等.是真命题; B、逆命题为:如果a=3,那么a2=9.是真命题;

C、逆命题为:相等的角是对顶角.是假命题; D、逆命题为:到线段两个端点的距离相等的点在这条线段垂直平分线上.是真命题. 故选C. 【点睛】 此题考查了命题与逆命题的关系.解题的关键是找到各命题的逆命题,再证明正误即可. 3.下列命题中正确的是(). A.所有等腰三角形都相似B.两边成比例的两个等腰三角形相似C.有一个角相等的两个等腰三角形相似D.有一个角是100°的两个等腰三角形相似【答案】D 【解析】 【分析】 根据相似三角形进行判断即可. 【详解】 解:A、所有等腰三角形不一定都相似,原命题是假命题; B、两边成比例的两个等腰三角形不一定相似,原命题是假命题; C、有一个角相等的两个等腰三角形不一定相似,原命题是假命题; D、有一个角是100°的两个等腰三角形相似,是真命题; 故选:D. 【点睛】 本题考查了命题与定理:判断事物的语句叫命题;正确的命题称为真命题,错误的命题称为假命题;经过推理论证的真命题称为定理. 4.下列命题中,是假命题的是() A.对顶角相等B.同位角相等 C.同角的余角相等D.全等三角形的面积相等 【答案】B 【解析】 【分析】 根据对顶角得性质、平行线得性质、余角得等于及全等三角形得性质逐一判断即可得答案. 【详解】 A.对顶角相等是真命题,故该选项不合题意, B.两直线平行,同位角相等,故该选项是假命题,符合题意, C.同角的余角相等是真命题,故该选项不合题意, D.全等三角形的面积相等是真命题,故该选项不合题意. 故选:B. 【点睛】 本题主要考查了命题的真假判断,正确的命题叫真命题,错误的命题叫做假命题.判断命

用gSOAP调用Web Services

用gSOAP调用Web Services 1、配置gSOAP 从https://www.360docs.net/doc/a1451833.html,/project/showfiles.php?group_id=52781 下载gSOAP,解压后在gsoap\bin\win32里找到wsdl2h.exe 和soapcpp2.exe程序。通过这两个程序可以生成客户端需要的C/C++文件。这两个程序的使用方法: wsdl2h.exe: 编译wsdl文件生成c/c++头文件 -o 文件名,指定输出头文件 -n 名空间前缀代替默认的ns -c 产生纯C代码,否则是C++代码 -s 不要使用STL代码 -t 文件名,指定type map文件,默认为typemap.dat -e 禁止为enum成员加上名空间前缀

soapcpp2.exe: gSOAP编译器,编译头文件生成服务器和客户端都需要的c/c++文件 (如果使用STL,需要从压缩包里找到stlvector.h放到soapcpp2.exe目录下,否则运行失败) -C 仅生成客户端代码 -S 仅生成服务器端代码 -L 不要产生soapClientLib.c和soapServerLib.c文件 -c 产生纯C代码,否则是C++代码(与头文件有关) -I 指定import路径(见上文) -x 不要产生XML示例文件 -i 生成C++包装,客户端为xxxxProxy.h(.cpp),服务器端为xxxxService.h(.cpp) 我写了个批处理:

wsdl2h -o xxxService.h "WSDL文件URL" soapcpp2 -C xxxService.h 如果是asmx,可以在URL后加"?WSDL" 来获取WSDL文件,它是一个XML,用来描述接口,它是与语言无关的,类似COM的IDL文件。 2、创建VC工程,把生成的文件拷到工程目录 生成的文件有: soapStub.h 从输入Header 文件生成的经过修改且带标注的Header 文件 soapH.h 主Header 文件,所有客户机和服务源代码都要将其包括在内 soapC.c 指定数据结构的序列化器和反序列化器 soapClient.c 远程操作的客户机存根例程 stdsoap2.h stdsoap2.cpp 运行时库的Header 文件

最新初中数学命题与证明的易错题汇编含答案

最新初中数学命题与证明的易错题汇编含答案 一、选择题 1.下列命题的逆命题成立的是( ) A .对顶角相等 B .全等三角形的对应角相等 C .如果两个数相等,那么它们的绝对值相等 D .两直线平行,同位角相等 【答案】D 【解析】 【分析】 写出各个命题的逆命题,然后判断是否成立即可. 【详解】 解:A 、逆命题为相等的角为对顶角,不成立; B 、逆命题为对应角相等的三角形全等,不成立; C 、逆命题为绝对值相等的两个数相等,不成立; D 、逆命题为同位角相等,两直线平行,成立, 故选:D . 【点睛】 本题考查了命题与定理的知识,解题的关键是能够正确的写出各个命题的逆命题,难度不大. 2.下列命题中:①等腰三角形底边的中点到两腰的距离相等;②等腰三角形的高、中线、角平分线互相重合; ③若ABC V 与'''A B C V 成轴对称,则ABC V 一定与'''A B C V 全等;④有一个角是60度的三角形是等边三角形;⑤等腰三角形的对称轴是顶角的平分线.正确命题的个数是( ) A .2 B .3 C .4 D .5 【答案】A 【解析】 【分析】 利用轴对称的性质、等腰三角形的性质、等边三角形的判定等知识分别判断后即可确定正确的选项. 【详解】 解:①等腰三角形底边的中点到两腰的距离相等;正确; ②等腰三角形的底边上的高、底边上的中线、顶角的平分线互相重合;不正确: ③若ABC V 与'''A B C V 成轴对称,则ABC V 一定与'''A B C V 全等;正确; ④有一个角是60度的等腰三角形是等边三角形;不正确; ⑤等腰三角形的对称轴是顶角的平分线所在的直线,不正确. 正确命题为:2①③,个;

Webservice 发布--WSDL,SOAP

本周主要学习了Web service,Web service就是一个个应用程序,它向外界暴露了一个能够通过Web进行调用的API。 首先应该先了解下Webservice用到的技术:WSDL,SOAP。 WSDL(Web Services Description Language)网络服务描述语言。使用XML编写。两台机器进行通信,服务端写了一个java程序而客户端通过远程访问要调用这个java程序,客户端需要了解这个程序的作用以及所调用的方法参数等。这里我们就需要用WSDL 对此java程序进行描述,客户端获取到此描述文件后对文件进行解析,了解此文件的信息,以及调用方式。 SOAP就是一种访问协议,用于规定应用程序之间通信的格式,独立于平台和语言。根据需要生成SOAP请求信息,发到服务端。服务端接收后分析其中的方法和参数调用指定的方法完成此请求,并把返回值放入SOAP回应消息返回给客户。 例:先创建一个名为Web的Web工程在建一个名为com.cxf.web的包,在包下创建两个java文件实现两个数相加的功能: 1. add.java package com.cxf.web; import javax.jws.WebService; @WebService public interface add { public int jia(int a,int b); } 2. addImp.java、 package com.cxf.web; import javax.jws.WebService; @WebService(endpointInterface="com.cxf.web.add") public class addImp implements add{ public int jia(int c,int d){ return (c+d); } } 相关的配置

linux下gsoap使用及移植

Linux下gsoap的使用及移植 1、下载gsoap 在gsoap的官网中可以找到最新的gsoap安装包及相关文档 gsoap官网:https://www.360docs.net/doc/a1451833.html,/~engelen/soap.html 下载地址:https://www.360docs.net/doc/a1451833.html,/projects/gsoap2/files/ 2、安装gsoap a、解压zip压缩包 命令:unzip gsoap_2.8.1.zip b、进入解压后生成的文件夹gsoap-2.8 命令:cd gsoap-2.8/ c、切换到root用户 命令:su 输入密码 d、配置编译环境 在gsoap-2.8/文件夹下执行configure文件,自动配置编译环境 命令:./configure e、编译连接 命令:make f、安装gsoap 命令:make install 安装完毕可用wsdl2h或soapcpp2查看gsoap是否已经安装成功 看到上述两个命令的返回说明安装成功 3、应用实例 wsdl2h -o outfile.h infile.wsdl 实现wsdl文件到h文件的数据映射 soapcpp2 -c outfile.h生成相应的底层通信stub,strech程序 首先新建一个文件夹名为gsoap;然后 (1)不使用wsdl2h a、不使用wsdl2h我们可以直接从.h文件来生成代码。我们先定义一个函数声明文 件,用来定义接口函数,名称为add.h,内容如下: //gsoapopt cw //gsoap ns2 schema namespace: urn:add //gsoap ns2 schema form: unqualified //gsoap ns2 service name: add //gsoap ns2 service type: addPortType //gsoap ns2 service port:https://www.360docs.net/doc/a1451833.html,/~engelen/addserver.cgi //gsoap ns2 service namespace: urn:add //gsoap ns2 service transport: https://www.360docs.net/doc/a1451833.html,/soap/http //gsoap ns2 service method-style: add rpc //gsoap ns2 service method-encoding: add https://www.360docs.net/doc/a1451833.html,/soap/encoding/ //gsoap ns2 service method-action: add "" int ns2__add( int num1, int num2, int* sum ); b、执行soapcpp2 –c add.h,自动生成一些远程调用需要的文件 c、接下来写一个服务端,创建文件addserver.c

WebService 之 WSDL文件 讲解

WebService 之 WSDL文件讲解 恩,我想说的是,是不是经常有人在开发的时候,特别是和第三方有接口的时候,走的是SOAP协议,然后用户给你一个WSDL文件,说按照上面的进行适配,嘿嘿,这个时候,要是你以前没有开发过,肯定会傻眼,那如果你想学习的话,就认真的看下面的讲解咯: 一、WSDL概述 WebServices Description Language (WSDL Web服务语言)是一个用于精确描述Web Service 的文档格式。 WSDL非常适合于用作代码生成器,它能够读取WSDL文档,并且可以为访问Web服务生成一个程序化的接口,大多数软件供应商和主要的标准机构(包括 W3C、WS-I和OASIS)都支持WSDL。例如:JAX-RPC provider(例如:BEA Weblogic)通过API用WSDL生成相应的占位程序;IBM WebSphere、https://www.360docs.net/doc/a1451833.html,以及Apache Axis都有自己的工具生成相关的代码。下图是一个例子: 上面的例子JAX-RPC通过读取WSDL文档,创建JAX-RPC RMI接口(endpoint接口)和实现此接口的网络占位程序(stub)。客户端程序通过RMI接口,Stub和Web Service服务端交换SAOP消息。 二、WSDL基本结构 WSDL文档是一个遵循WSDL XML模式的XML文档(文档实例);类似于:SOAP文档是一个遵循SOAP XML模式的XML文档(文档实例); 一个WSDL文档的根元素是definitions元素,WSDL文档包含7个重要的元素:types, import, message, portType, operations, binding和service元素。 三、WSDL声明 3.1 XML声明

CentOS6.5下编绎gSoap相关问题及解决

CentOS6.5 下编绎gSoap 相关问题及解决 ,开发环境准备: 1,centos 为虚拟下安装,版本为32 位,(64 位同样可以,均测过, 需注意的是红色部分内容) 2,gSoap:gsoap_2.7tar.gzhttps://www.360docs.net/doc/a1451833.html,/~engelen/s oap.html 载下来解压缩,按正常安装过程进行编译、安装。# tar zxvf gsozp_2.7.12.tar.gz # cd gsoap_2.7.12 #./configure 或 {./configure -p refix=/usr/local/gSOA P (指定安装路径) }# make # make install 问题: ../../ylwrap: line 111: yacc: command not found 原因:没有安装:yacc(Yet Another Compiler Compiler) 是Unix/Linux 上一个用来生成编译器的编译器 (编译器代码生 成器)。解决方案:sudo apt-get install flex bison(ubantu)yum install byacc(centos) 问题:gsoap- 2.7/missing: line 46: flex: command not found 决方法: yum install flex( 要重新运行./configure)(centos )apt-get install flex(ubantu) 问题:/usr/bin/ld: cannot find -ly 解决方法:yum install bison-devel(centos)apt-get install bison(ubantu) 问 题:../../gsoap/stdsoap2.h:690:19: error: zlib.h: No such file or directory 解决方法:缺少zlib,ubantu 下,

使用gSOAP开发实例--Usernametoken Authentication实现

使用gSOAP开发实例——自定义header实现用户名令牌认证(Usernametoken Authentication) 上一节介绍了怎样实现基本认证(Basic Authentication,以下简称basic方式),望文生义,也就是最简单的用户验证方式,本节稍微深入一些,介绍用户名令牌认证(Usernametoken Authentication,以下简称usernametoken方式)。 Usernametoken方式与basic方式不同的地方,在于后者会把用户名和密码以摘要(digest)的形式,置于HTTP信息头,而前者则把用户名以明文的形式、密码以明文或者摘要的形式,嵌入到一段XML文本中,再置于SOAP消息头当中。 如果使用soapUI调试客户端程序的话,会发现以下是basic方式发出的完整的SOAP消息: POST https://https://www.360docs.net/doc/a1451833.html,/Services/ECHO HTTP/0.9 Content-Type: text/xml;charset=UTF-8 SOAPAction: "" User-Agent: Jakarta Commons-HttpClient/3.1 Content-Length: 292 Authorization: Basic VkYtSEstbVNNST0OdlR42EMZaD1BMyE= Host: https://www.360docs.net/doc/a1451833.html, Cookie: $Version=0; MSP2LB=test2.test2f02; $Path=/ hello

gSOAP学习笔记总结版

Struct soap add_soap; Soap_malloc(add_soap, len); // 申请空间,soap_end函数释放 >>gsoap传输中文。我使用utf-8编码格式来支持汉字的传输。 1. 设置gsoap为utf-8传输数据 soap_set_mode( &SmsWBS_soap, SOAP_C_UTFSTRING ); //设置编码 SmsWBS_soap.mode|=SOAP_C_UTFSTRING; 2. 使用下面得函数转换我们的传输内容,即将我们的数据转成UTF-8编码: int conv_charset( const char *dest, const char *src, char *input, size_t ilen, char *output, size_t olen ) { int convlen = olen; iconv_t conv = iconv_open( dest, src ); if( conv == (iconv_t) -1 ) return -1; memset( output, 0, olen ); if( iconv( conv, &input, &ilen, &output, &olen ) ){ iconv_close(conv); return -1; } iconv_close(conv); return convlen-olen; } 例子:conv_charset( "UTF-8", "GBK", "林学任.linxr", strlen("林学 任.linxr"), buf_out->name, 100 ); >>gsoap中返回字符串 1. 下面是一个逆转字符串的函数。 int ns__echo_USCOREreverse( char * buf_in, char ** buf_out ); int ns__echo_USCOREreverse( struct soap *add_soap, char *buf_in, char **buf_out ) { int i, j, len; printf( "ns__interface: in=[%s]\n", buf_in ); len = strlen(buf_in); *buf_out = (char*)soap_malloc( add_soap, len+1 );

GSoap工具的安装和使用

7.4GSOAP工具的安装和使用 7.4.1GSOAP安装 GSOAP工具可以在WIN和UNIX两个系统平台下运行,这就使我们的程序在跨平台上有了基础。工具的安装包可浏览其主页下载。本DEMO的开发使用的版本为gsoap_win32_2.7.9l,工具的运行环境是Windows系统。 图7.12 Windows下的GSOAP安装包 图7.13 LINUX或UNIX下的GSOAP安装包 设置系统环境变量,这样可以很方便的使用GSOAP工具,如下为GSOAP的两个工具,我们将他们设置到可以在DOS下可直接使用的程序。 图7.14 GSOAP两个工具程序

图7.15 GSOAP使用方法7.4.2生成客户端文件 Wsdl2h.exe的参数说明参见7.5.1节

图7.16 在DOS下使用wsdl2h.exe工具生成SendSMSClient.h文件 图7.17 生成成功 图7.18 生成的文件(短信为例) Soapcpp2.exe工具的参数说明参见7.5.2 节 图7.19 根据.h生成客户端的文件

图7.20 生成成功提示信息 图7.21 生成的客户端文件

表7.1 生成文件的说明其他文件在项目中没有使用,在此不做介绍,如需了解参看网络资料。 7.4.3生成服务端文件 Wsdl2h.exe的参数说明参见7.5.1节 图7.22 创建WEB SERVICE的.h文件 图7.23 生成的文件Soapcpp2.exe工具的参数说明参见7.5.2 节

图7.24 生成WEB SERVICE服务端文件 图7.25 生成的服务端文件 7.5GSOAP工具的参数 soapcpp2.exe: gSOAP编译器,编译头文件生成服务器和客户端都需要的c/c++文件。wsdl2h.exe: 编译wsdl文件生成c/c++头文件。

gsoap的wsdl文件

wsdl是通过gsoap自动生成的。也就是说再没有wsdl文件的时候可以先定义xxxx.h文件,xxxx.h 的定义里面要包括 //gsoap ns service nam e: severName 等项。然后通过soapcpp2.exe xxxx.h来生成wsdl文件等。 如果有可以利用的wsdl文件则可以先生成.h文件再生成soap依赖文件,如:soapStub.h等。 ;;;;;;;;;;;;;;;;;;;;; 准备: 到https://www.360docs.net/doc/a1451833.html,/projects/gsoap2/files/下载gsoap最新版本,笔者写此文章时最新版本是gsoap_2.7.13.tar.gz,解压缩,笔者解压缩到了D:/software下。Step1:创建要发布的C++头文件,指定服务操作(calcu.h) 在头文件中定义了三个操作:加、减和开方。参数a和b是输入型参数,result 用来保存结果,返回值说明调用是否成功。为图方便,笔者将此文件建在gsoap RPC编译器同一目录下,即D:/software/gsoap-2.7.13/gsoap/bin/win32,文件内容如下: //gsoap ns service name: calc //gsoap ns service style: rpc //gsoap ns service namespace: https://www.360docs.net/doc/a1451833.html,/calc.wsdl //gsoap ns service location: https://www.360docs.net/doc/a1451833.html,/calc.cgi //gsoap ns schema namespace: urn:calc int ns__add(double a, double b, double *result); int ns__sub(double a, double b, double *result); int ns__sqrt(double a, double *result); 说明:service name:提供的服务的名称。 service style:Web Service绑定类型。 service namespace:命名空间,对应于wsdl中的targetNamespace和xmlns:tns的值。 Service location:服务定位,对应于wsdl中的 Step2:用gsoap RPC编译器生成相应文件 在命令行中执行soapcpp2.exe calcu.h,执行情况如下图所示,执行完成后生成如图18个文件。

CentOS6.5下编绎gSoap相关问题及解决

CentOS6.5下编绎gSoap相关问题及解决 一,开发环境准备: 1,centos为虚拟下安装,版本为32位,(64位同样可以,均测过,需注意的是红色部分内容) 2,gSoap:gsoap_2.7tar.gzhttps://www.360docs.net/doc/a1451833.html,/~engelen/s oap.html 下载下来解压缩,按正常安装过程进行编译、安装。# tar zxvf gsozp_2.7.12.tar.gz # cd gsoap_2.7.12 #./configure或 {./configure –-prefix=/usr/local/gSOAP(指定安装路径)}# make # make install 问题: ../../ylwrap: line 111: yacc: command not found 原因:没有安装:yacc(Yet Another Compiler Compiler),是Unix/Linux上一个用来生成编译器的编译器(编译器代码生成器)。解决方案:sudo apt-get install flex bison(ubantu)yum install byacc(centos)问 题:gsoap-2.7/missing: line 46: flex: command not found解决方法: yum install flex(要重新运行./configure)(centos 下)apt-get install flex(ubantu)问题:/usr/bin/ld: cannot find -ly解决方法:yum install bison-devel(centos)apt-get install bison(ubantu)问题:../../gsoap/stdsoap2.h:690:19: error: zlib.h: No such file or directory解决方法:缺少zlib,ubantu下,

wsdl生成及测试文档

Webservice服务提供和测试过程 一、新建接口和实现类或者在原有基础上新增方法 说明:1. 在接口类和实现类上添加注解@WebService,在方法上方添加@WebMethod 2. 在方法入参前添加注解@WebParam(name="随意"),对应请求报文中的参数 名。使用该注解必须先添加@WebService和@WebMethod。 例子: 二、根据接口生成wsdl J ava2W SD L.j ava 使用类 说明:1. args1需要修改,地址修改为希望存放生成的wsdl文件的路径。 2. 修改main方法中的参数,修改为接口类名 三、修改wsdl中的发布地址address 将location中参数修改为希望发布的webservice地址,发布到现场时需要修改为真实地址。 说明:1. 使用注解@WebService时如果有参数ServiceName,必须与wsdl中的name 一致,否则会报错。 四、修改xml配置 在application-context-webservice-server.xml中新增两条配置: 1. webService实现类JavaBean,id随意,class为实现类路径 2.< jaxws:endpoint> id随意,implementor与中ID一致,address发布地址与wsdl 中的location一致,其他参数可以参考其他类似配置。

五、使用client进行单元测试 cl i ent.j ava 将参数修改为application-context-webservice-server.xml中配置的< jaxws:endpoint >的id。访问发布地址http://localhost:8080/services/HelloWord?wsdl有wsdl配置信息说明发布成功。可以使用soapUI进行测试。 六、SoapUI 运行bin中的soapui-pro,提示需要导入注册码时,选择bin中的scz.key即可。 1.选择新建soapUI工程 2.选择生成好的wsdl 3.点击request,填参数,点击submit

C++通过gSoap访问webService

C++通过gSoap访问webService 最近在wince机器上做一个了项目要求访问wcf服务,看了一些资料了解到可以通过gsoap实现。刚刚弄通了,写个小结日后回顾,有需要的也可以看看。 1、下载最新gsoap包(https://www.360docs.net/doc/a1451833.html,/projects/gsoap2/),下载完解压就可以了。 2、运行“cmd” 进入“gsoap-2.8\gsoap\bin\win32”目录下。 3、生成头文件。 wsdl2h -o WSCheckQqOnline.h https://www.360docs.net/doc/a1451833.html,/webservices/qqOnlineWebService.asmx?WSDL (转注:关于gSoap及它的两个工具:soapcpp2和wsdl2h的介绍,可以参考:https://www.360docs.net/doc/a1451833.html,/guxch/article/details/8332701) 4、将“\gsoap-2.8\gsoap\import”目录下的soap12.h 和stlvector.h复制到 “gsoap-2.8\gsoap\bin\win32”中。生成代码的时候要用到。 5、生成webService要调用的代码。 我所使用的是“soapcpp2-C -L -i -x WSCheckQqOnline.h”。 -C:仅生成客户端代码 -S :仅生成服务器端代码 -L :不要产生soapClientLib.c和soapServerLib.c文件 -c :产生纯C代码,否则是C++代码(与头文件有关) -I :指定import路径(见上文) -x :不要产生XML示例文件

gSOAP+在基于+ONVIF协议的网络视频监控系统中的应用

ONVIF致力于通过全球性的开放接口标准推进网络视频在安防市场的应用[1]。这一标准定义了网络视频设备之间信息交换的通用协议,使不同生产厂商的网络视频产品具有互通性。该协议是以Web Service为基础的,目前WebService主要通过基于C/C++编程的gSOAP开源工具、基于C#的NET:sveutil.exe开发工具和采用JAVA语言的ApacheAXIS2这几种编程工具来实现。不管是哪种编程语言,都已经有相应的工具包来定制和发布Web服务。 考虑到gSOAP是一个快速应用程序开发(RAD)环境,因为该系统在利用C和C++开发Web服务和客户端应用程序时很大程度地实现了自动化,在简化Web服务的应用程序开发上具有一系列特征。本文将研究gSOAP工具包在基于ONVIF协议的网络视频监控系统中的应用。 1 gSOAP简介 1.1 gSOAP工具包 gSOAP的工具包项目受到美国联邦政府的研究和发展项目基金的资助[2],是一款开源的WebServices软件。该工具包提供了一个SOAP/XML关于C/C++语言的实现,一定程度上简化了使用C/ C++语言开发Web服务或客户端程序的工作。gSOAP利用编译器技术提供了一组透明化的SOAPAPI,并将与开发无关的SOAP实现细节相关的内容对用户隐藏起来,故对软件开发者而言无需了解SOAP协议实现细节而只需调用这些API即可,因此非常方便。同时gSOAP能够集成C/C++和Fortran代码,跨越多个操作系统平台和语言环境,使用范围相当广泛。该工具包分析WSDL语法和XML模式,并且把XML模式类型和SOAP传递协议映射到易于理解和使用的C/C++代码。如果使用C++语言开发万维网服务,还可以选择是否支持C++的STL。 1.2 gSOAP技术 gSOAP是以HTTP协议为基本的通信协议,它可以理解为一个C/C++的Web服务协议栈。该协议栈从下至上主要包括5部分:网络传输、Web服务调用(消息传输)、Web服务描述与注册(接口描述、发布与发现)、Web服务质量(安全性,可靠性,事务控制)、Web服务工作流(商业流程、事务等)。 虽然gSOAP服务栈由多层结构组成,并与其他网络协议结合使用,看似复杂,但在用gSOAP开发嵌入式系统中的Web服务非常方便。g S O A P工具包中提供了两个可执行文件:w s d l2h和soapcpp2。wsdl2h用来解析wsdl文档生成描述服务的C/C++头文件,soapcpp2用来解析该头文件并生成框架代码。生成的框架文件 gSOAP在基于ONVIF 协议的网络视频监控系统中的应用 肖路欢1 谢灿2 何策2 (1.重庆邮电大学通信新技术应用研究所 重庆 400065; 2.重庆信科设计有限公司 重庆 400065) 摘要:ONVIF(Open Network Video Interface Forum,即开放性网络视频接口论坛)是以Web服务标准为基础的网络视频接口标准。遵循该标准的终端设备均须提供与功能相应的Web Service。在基于ONVIF协议的网络视频监控系统开发中,通过ONVIF官网提供的WSDL文件,使用gSOAP技术,生成C/C++的RPC代码,XML数据绑定,不需要理解SOAP协议的具体细节,完成HTTP在SOAP上的具体封装,缩短了ONVIF 协议模块的开发周期。 关键词:ONVIF Web 服务 gSOAP 网络视频监控系统 中图分类号:TP277文献标识码:A文章编号:1007-9416(2013)06-0128-03 gSOAP Based on ONVIF Protocol Network Video Monitoring System Xiao Luhuan1,Xie Can2 , He Ce2 (1.Institute of Applied Communication Technology, Chongqing University of Posts and Telecommunications Communication, Chongqing China 400065; 2.Chongqing Chongyou Information Technology Co. , Ltd, Chongqing 400065) Abstract:ONVIF (Open Network Video Interface Forum) is based on Web services standards’s Network Video Interface standard. Following the standard terminal equipment shall be provided with the function of the corresponding Web Service.This article discuss the network video monitoring system based on ONVIF protocol, through a WSDL file provide by the ONVIF website,use gSOAP technology, generate RPC of C/C + + code, XML Data binding,not need to understand the details of the SOAP protocol,completion of the package on the HTTP in the SOAP,Shorten the development cycle of the ONVIF protocol module. Key Words:ONVIF Web services gSOAP the network video monitoring system 基金项目:科技型中小企业技术创新基金(11C26215113601) 作者简介:肖路欢(1987-),男,汉族,湖南娄底人,重庆邮电大学在读硕士研究生,研究方向为通信新技术应用。 谢灿(1980—),男,汉族,重庆人,硕士,研发工程师。主要研究方向物联网与视频监控技术。 何策(1985-),男,研发工程师,主要研究方向为嵌入式软件开发、网络通信协议等。

相关文档
最新文档