字体:  

一个在百度根本搜不到的PHP绝世难题

wenfeng2 发表于: 2008-9-20 21:42 来源: PHPChina 开源社区门户

大家用过Zend Framework的soap没有, 用过Zend_Soap_AutoDiscover没有??

服务端我这样写: server.php





客户端我这样写: client.php



打开浏览器访问客户端:client.php
出现错误:
Fatal error: Uncaught SoapFault exception: [VersionMismatch] Wrong Version in E:\webSite\htdocs\client.php:10 Stack trace: #0 [internal function]: SoapClient->__call('get', Array) #1 E:\webSite\htdocs\client.php(10): SoapClient->get() #2 {main} thrown in E:\webSite\htdocs\client.php on line 10

我在百度搜Zend_Soap_AutoDiscover,0条结果...估计过几天会多一条..就是phpchina里面我这个帖子

Zend_Soap_AutoDiscover就是为了不需要你去写那长长的wsdl文件,zend自动生成!(zend studio能自动生成...但不能动态生成, 即需求变了又要手动去搞)

大家有谁用过???搞了我整晚...都搞不出来!!!啊.......



[ 本帖最后由 wenfeng2 于 2008-9-20 22:45 编辑 ]

最新回复

小烂 at 2008-9-20 22:33:19
虽然我没用过。。

但是zend studio 就可以生成WSDL
wenfeng2 at 2008-9-20 22:44:35
我想要动态生成..需求变了还可以用...不要老是要去维护啊...唉...
怎么办....
leric at 2008-9-20 23:42:56
如果你的服务接口都经常变,那维护必然是个大问题
suchasplus at 2008-9-21 12:48:52

QUOTE:

原帖由 wenfeng2 于 2008-9-20 21:42 发表
大家用过Zend Framework的soap没有, 用过Zend_Soap_AutoDiscover没有??

服务端我这样写: server.php


class My_SoapServer_Class {

  public function get(){
  
    return 100;
  
  }

}
...
用zf的话还用baidu???
直接google英文站点或者zf论坛
英文不好就去学。。
baidu能搜出什么东西-_-#!
wenfeng2 at 2008-9-21 13:00:17
你去google搜一下..Zend_Soap_AutoDiscover + VersionMismatch
只有几条...都是zf论坛的帖子..但貌似没有最终结果...而且还有zf设计者的留言...说他们也没真正仔细测试过,可能会有bug, 而且有人给出了修正版, 但修正版乱七八糟, 没人敢用(2007年的帖子)

我只是强调这个问题在baidu是搜不到..没说我没去google搜..
只要是智商有点正常的人都会知道百度搜不了就去谷歌.... 莫非楼上以为人人都低智商?

楼上不要炫耀自己的英语...不要以为会的人只有你一个~ 

[ 本帖最后由 wenfeng2 于 2008-9-21 17:48 编辑 ]
stylecn at 2008-9-22 10:10:46
“百度根本搜不到的PHP绝世难题”用Google看下能搜到不?
七月十五 at 2008-9-22 10:17:01
哗众取宠,此帖该封!
wenfeng2 at 2008-9-22 11:22:06
请问你能解决得了吗?
如果你都解决不了请不要说三道四~
9945 at 2008-9-22 12:23:24
SoapClient 这烂东西还有人用?

你的问题是搜安排返回的XML的格式错误。

你改改下面的代码,自己handle exception:

function soap_exception(){
        echo "<div style='margin:100px auto; width:400px;padding:25px; font-family:arial; border:2px dotted #a00'>
                <p  style='color:#a00;font-size:1.4em;font-weight:600'>
                Data farmet error ! <br/>
                internal error number: # 401021 </p>
                </div>
                ";       
}

--------------------------------
在调soap 时

set_exception_handler(("soap_error");
$ret = $soap_obj->__call($cmd,$data_array);
restore_exception_handler();
wenfeng2 at 2008-9-22 12:38:33
我这里是用zend Framework里面的方法, 发现它原配的方法似乎有点问题... 就是自动non-wsdl模式有问题...不知道什么原因....
反正返回的错误是VersionMismatch, xml格式错误? 没有吧...server生成的xml的语法估计没错...可能是某些tag不规范还是怎么样...反正client解释不了...网上说可能是命名空间问题....但好像没问题...总之直接用zend的这个Zend_Soap_AutoDiscover不太行...

SoapClient 烂东西? 何以见得?

[ 本帖最后由 wenfeng2 于 2008-9-22 12:46 编辑 ]
九龙 at 2008-9-22 15:51:38
http://www.baidu.com/s?tn=monlin ... %D1%CC%E2+&ct=0

百度一下,找到相关网页约1,880篇,用时0.028秒

瓦咔咔~~
wenfeng2 at 2008-9-22 18:57:27
晕....
不过竟然我这个帖子排到最前面...
哦呵呵呵呵~~
gavy41 at 2008-9-23 16:25:32
求知识的也标题党啊
naodai at 2008-9-23 17:24:47
同意 十五的 看法
封了他!!
wenfeng2 at 2008-9-23 20:26:49
如果你能解决再封都未迟.....
sun_able at 2008-9-24 14:21:14
错误提示是SOAP Server端和Client端版本不同。
你不要用PHP自带的SoapClient,而使用Zend_Soap_Client 看看。
mayongzhan at 2008-9-24 20:50:56
soap确实有人用...........


而且提供的东西很不完整
wenfeng2 at 2008-9-24 21:20:59

QUOTE:

原帖由 sun_able 于 2008-9-24 14:21 发表
错误提示是SOAP Server端和Client端版本不同。
你不要用PHP自带的SoapClient,而使用Zend_Soap_Client 看看。
如果改成Zend_Soap_Client 就出现这个错误:
Fatal error: Maximum function nesting level of '100' reached, aborting! in E:\webSite\htdocs\chosing\library\Zend\Soap\Client.php on line 63


11.jpg



后来google了一下原来是我装了xdebug才出现这个错误,
后来我关掉xdebug这个扩展, 发现就无法打开该网页...
我终于明白了, 这个程序不断重复调用call_user_func_array ( )和Zend_Soap_Client_Common->__doRequest( )(xdebug显示了程序的每一个步骤调用的函数),调用了100次, 估计php引擎不能容忍重复100次以上的调用, 所以xdebug就反映出这个错误Maximum function nesting level of '100' reached....
所以...问题最终没解决...到底怎么回事...zend的这个东东用不了?