2.写应用接口,代码如下:
public static void main(String[] args) {
JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance()
String wsUrl = "http://zong.bjchyedu.cn/ids/services/account?wsdl" //wsdl地址
String method = "webservice_method"//webservice的方法名
Client client = dcf.createClient(wsUrl)
Object[] res = null
try {
res = client.invoke(method)//调用webservice
} catch (Exception e) {
e.printStackTrace()
}
System.out.println("res:"+res[0])
System.exit(0)
}
一、接口的分类:1、URL类型的接口
URL
路由带参数式的接口!这个很好做!只要有过Web开发经验的人都能完成!这种接口数据不够隐蔽性,可以直接在浏览其中看到,如支付宝的交易请求URL。需
要加一个MD5签名,和服务器端的再次向支付宝服务器发送验证!虽然soap方式传递的数据隐蔽性很好!但为了数据安全,难免也需要进行数据签名。
2、SOAP类型的接口
无关编程语言、无关平台、扩展性很好,要实现一个SOAP 型的接口,有两种方式:一种有WSDL文件方式、一中无WSDL文件方式!
对
于热爱研究型的人来说,使用第一种方式可以让你清楚的了解PHP是怎么创建了一个Web
Service!但第一种对于新手来说,创建一个XML格式的WSDL文件,是比较难的,这你的先了解熟悉什么是XML!学会XML语法!但对于一个急于
解决问题的人来说!没有这么多的时间去熟悉!所以这是件烦恼的事!
二、PHP环境设置
先配置下PHP的soap环境支持:
找到php.ini文件
;extension=php_soap.dll
删除掉";" ,重启apache服务器
为了便于测试,需要关于wsdl缓存
方式1:
配置文件:php.ini 选项 soap.wsdl_cache_enabled 设置为0
方式2:
代码头添加:ini_set('soap.wsdl_cache_enabled', "0")//关闭wsdl缓存
三、有WSDL文件方式创建
在
这里先介绍标准的webservice。 那么如何创建wsdl呢?对于PHP来说这确实是件很不容易的事情,有人说用zend
studio创建很方便,这是一种方法。但对于那些不喜欢用zend studio的人来说,会觉得创建一个web service还要安装zend
studio,太强人所难了。
在这里介绍一个简单的方法,到网上下载SoapDiscovery.class.php类,里面有个公用方法:getWSDL,这个方法末尾是用的 return,那么,你修改一下这个方法:
//return sprintf('%s%s%s%s%s%s', $headerWSDL, $portTypeWSDL, $bindingWSDL, $serviceWSDL, $messageWSDL, '</definitions>')
//生成wsdl文件,将上面的return注释
$fso = fopen($this->class_name . ".wsdl" , "w")
fwrite($fso,
sprintf('%s%s%s%s%s%s', $headerWSDL, $portTypeWSDL, $bindingWSDL,
$serviceWSDL, $messageWSDL, '</definitions>'))
现在生成wsdl的类有了,SoapDiscovery.class.php(源码在最末尾)。
再准备一个提供服务的Service.php类文件或者函数就可以创建wsdl了!
使用Web Service进行WSDL逆向生成服务端步骤:在Eclipse中新建一个WSDL文件
改个名字为“manager.wsdl”。下一步,定义命名空间和协议等信息,默认即行
finish后,会在主工作区出现
这是manager.wsdl的图形化形式,点击“Source”会可查看到源代码
这是默认生成的wsdl,我们要根据我们的项目需要,首先对方法名进行修改。修改之后,右边的input和output也跟着修改了,这两个就是定义plus的输入和输出。 点击input参数“plus”右边的提示箭头
就在这里定义输入参数和和参数类型等信息,因为我们plus(float x, float y)方法中有两个参数x和y,故我们将上图改成两个参数的序列,对比一下方法plus(float x, float y)
返回manager.wsdl视图,选择output参数右边的箭头。设置float plus(float x, float y)方法的返回值及其类型,因其返回值只有一个,我们只须把上面的out的类型改成我们方法中用的float。点击左上角的图标。
回到manager.wsdl,在源代码视图里右键选“Validate”,对xml文档进行检验,如果有错误的,就根据需要修改。
图形化编写的wsdl文档完成了,顺便说一下,方法是可以定义多个的
为简单起见,我们就先以刚才做定义的那个方法为例,看看,如何根据wsdl文件,自动生成Web Service的服务器端
我们New一个Web Service。在Web Service type中选择“Top down Java Bean Web Service”。在Service definition中找到刚才写的那个manager.wsdl文件
Web Service对话框,将服务类型的滑块调到“Develop service”处。接下来,就next –>next –->finish就行。它会自动生成Web Service服务端的接口和类,在类中,可找到我们定义的方法,我们只要修改方法plus的方法体,以实现我们要实现的功能即行。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)