最近的项目中需要用到web Service,了解了下这方面的知识:
php实现web Service有三种方式:nusoap,pear soap,php5内置soap。其中前两种都是php4中用的,nusoap经过测试php5中也能用,不过要改下类名。
已经简单测试过了nusoap和内置soap。
遇到的问题:
1.soap传输的是xml文件,请问如果php中如何对xml进行序列化,php的序列化函数serialize不能序列化xml。
2.如果传输的数据太大,需要通过压缩传输时,pear soap、nusoap和内置soap都是用的什么压缩方式,还是都没有压缩处理的方法。
国内关于php web Service的介绍太少了,本人英文又弱,看英文文档头大,请问各位有没有应用过soap的帮忙解答下小弟的疑问,不胜感激!
被版主移到了高级区,我等级太低居然都无法在高级区回复,只能编辑下顶楼.....
现在报道下最新进展:
1.至今未找到php下对xml序列化的方法,感谢leric的回帖,至于为啥要对xml还要序列化,我也不清楚,项目经理要求我查下,他说在java当中对xml序列化有多种方式。
2.关于压缩传输,没有找到nusoap和内置soap中有控制压缩的方式,但是在nusoap的源码中发现在send_response函数有gzencode处理,推测soap中在返回数据时会自动进行压缩,至于能不能选择不压缩和设定压缩等级还没有头绪(已在官方mailing lists里边询问了,暂时没有结果),所以对于soap的gzip压缩传输问题可以肯定的说肯定可以存在压缩传输,而且不是依靠apache,是调用php自己的gzencode方法(这里bs下gzdecode,手册里有列这个方法,但实际中没有,对gzencode方法压缩的东东需要自己写解码函数,很简单,去官网看看就知道怎么做了)。
3.关于zend framework的web Service方式,他没有用soap,用的是基于simpleXml的xmlrpc和rest,要想用soap还是得用那三种方式
谢谢bc1998的回帖,你发的地址处视频无法播放,能提供再具体一点的资料吗?
[ 本帖最后由 sunnycoolboy85 于 2008-7-28 10:21 编辑 ]


最新回复
苦啊
QUOTE:
是啊,国内的资料有够少的要序列化可以使用json传递,对方使用json_decode
QUOTE:
呵呵我也想发在高级区,但是没有权限......QUOTE:
序列化是因为客户端不一定也是php的,怕会出问题,既然php不能序列化xml那就想别的办法,初步构想是找个c的序列化源码编译做php的扩展。
另外请问在web Service中怎么实现压缩传输呢,因为数据较大的话压缩传输比较好,xml浪费资源。
要压缩的话Web服务器可能会做这个事,不知现在的WS客户端都是怎么实现的,能不能认出压缩了的消息。
zend framework in web services