php如何调用java写的webservice?
接口参数是一个java写的类,php这边传什么过去?传php类还是数组?具体应该怎么写?
网上的例子都是很简单的,参数是string那种的,稍复杂的就没有了.
问题点数:100、回复次数:14Top
1 楼uuq(杜牧)回复于 2006-03-14 13:01:45 得分 0
前面不是有人问了吗,翻下旧贴啊
Top
2 楼eglic(圪圪) (理由永远是谎言,信仰永远是自慰)回复于 2006-03-14 13:03:10 得分 0
nusoap.phpTop
3 楼daguohuai()回复于 2006-03-14 13:05:47 得分 0
你们有没有看我的内容啊???
接口参数是一个java类啊,php怎么传啊??
Top
4 楼helloyou0(你好!)回复于 2006-03-14 13:18:26 得分 0
webservice传递的数据应该都是xml格式的,
看它具体是什么标准的,soap或者xml-rpc的,
都有特定格式Top
5 楼daguohuai()回复于 2006-03-14 13:56:29 得分 0
我不是关心数据是怎么传递的,我想知道调用的时候该怎么写?
因为soap就是把远程方法模拟成本地调用,就像调用本地函数一样,比如call里面有方法名,参数表等等,但是网上例子一般参数都是string的,什么"hello"之类的.如果参数是一个java类呢?
有实际工作中用过php调用java写的webservice的么?Top
6 楼uuq(杜牧)回复于 2006-03-15 13:04:56 得分 0
你好固执呀,网上有教程
前面的贴子也说了Top
7 楼kjeny2002(小杭)回复于 2006-03-15 14:42:06 得分 0
导入wsdl。。客户端用什么写都一样Top
8 楼xuzuning(唠叨)回复于 2006-03-15 15:23:25 得分 0
接口参数是一个java写的类???
就是连java也调用不成功的Top
9 楼yh801216(艾奥利斯)回复于 2006-03-15 17:07:09 得分 0
唠叨老大说得对:P
在webservice中有个"复合类型"的概念,
在webservice中数据类型分两种:
复合类型,基本类型
基本类型仅包括 string,int,float,datetime等标准类型
其余各个语言中的数据类型都要定义成符合webservice规范的复合类型
在webservice 服务器端程序中如果遇到这样的参数,那么它需要在wsdl定义中的开始定义复合类型:complex-type
当然,它可以传递 结构,对象等复杂类型,但是有一定限制,可以查查看。
在php调用接口时,只要按照复合类型定义中的方式去取得值就是了。。。
$results = $soap->call();
根据wsdl中的定义访问结果就是了。
比如结果中有2个参数,1个字符串,一个对象,用如下写法去获取结果:
$results['rt_string'];
$results['rt_obj']->a_attr;
呵呵,瞎说瞎说。随便看看:P
Top
10 楼yh801216(艾奥利斯)回复于 2006-03-15 17:13:47 得分 0
呵呵,从webservice的理念来看,其实楼主的这个问题不算问题的:P
比如:
java中的类,在php这样的东西怎么表示的?php中怎么定义类似这样的东东的?直接用php的方式访问之~就ok了。。。
hoho
就好像c中的结构,在php就是所谓的数组一个样子。。。
现在的语言高级到 和傻瓜相机差不多的地步了。。。Top
11 楼yh801216(艾奥利斯)回复于 2006-03-15 17:26:09 得分 0
呵呵,我写反了,原来楼主是说发起请求时的参数,不过差不多。
只要按照复合类型定义部分描述的就行。在php你一定能找到方式去定义地:P
不过像类中不支持方法等的注意事项楼主要看一看:P
传递的参数只要像上面一样的定义下$param 然后 $soap->call('servName',$param);Top
12 楼daguohuai()回复于 2006-03-17 16:52:59 得分 0
是的,如果类只是结构简单的,里面有几个string或int就可以直接用php里的class或数组就行了,不过这个类是java里面的dto类,也就是java各层之间传数据的类,也就是像.net里的DataSet吧,具体我也不太清楚,因为我对java不太熟悉,这样的类,好像无法在wsdl里用复合类型就能简单描述的。
这个接口参数,在java之间互相调用传递是没问题的,现在我问的就是用php-java的话怎么传递。Top
13 楼yh801216(艾奥利斯)回复于 2006-03-18 11:17:53 得分 0
好像dataset,datarow都不行。。
我也是看资料上这么说。
另外,楼主说的,java之间没问题,是通过webservice吧?
如果确认没有问题,那么php-java一样没有问题。
应用层上楼主不需要关心它怎么传递的,楼主查看wsdl看看那个复合类型如何定义的就是了。在webservice中无论是什么数据类型,对于它来说其实就是一个结构化的字符串,你只要能通过php模拟出同样的xml就没有问题了:PTop
14 楼yh801216(艾奥利斯)回复于 2006-03-18 11:19:31 得分 100
如果这样正向做比较困难,楼主可以改一下java接口,变成php传递简单参数过去,java返回那个复杂结果。
这样分析php得到的东西就知道该如何做了,照着这个结果写参数访问原来那个不就ok了?:PTop




