打包回家 | 报告新错误 | 新建搜索 | 发展路线图 状态:正常开放 | 反馈 | 全部 | 自版本0.14.0起关闭

错误#1404 复杂类型中的xsd:dateTime成员被序列化为xsd:string
提交: 2004年5月14日02:47 UTC
发件人: optimizer网站的clawrence 分配:
状态: 正常开放 包裹: SOAP协议(版本0.9.4)
PHP版本: 4.3.6 操作系统: 红帽7.2
路线图: (未分配)    
订阅  


 [2004-05-14 02:47 UTC]优化器网站
描述:------------当用作SOAP操作的输出时,复杂类型的DateTime成员被PEAR::SOAP(0.8RC3 beta)误报为字符串类型(有关详细信息,请参阅echoDate2())。echoDate1()操作在其响应中正确报告了dateTime数据类型原语。复制代码:---------------<?php程序set_magic_quotes_runtime(0);ini_set(“magic_quotes_gpc”,0);类SOAPDateWrap{var$日期化;函数SOAPDateWrap($datefied=NULL){$this->datefied=$datefied;}}require_once“SOAP/Value.php”;类SOAPEchoDateService{var$__dispatch_map=数组();var$__typedef=数组();函数SOAPEchoDateService(){//定义SOAPDataWrap类型$this->__typedef[]{http://www.optimiser.com/soap(网址:http://www.optimiser.com/soap)}SOAPDateWrap']=数组(“datefied”=>“dateTime”);//定义echoDate1操作$this->__dispatch_map['echoDate1']=数组('in'=>数组('inDate'=>'dateTime'),'out'=>阵列('outDate'=>'dateTime');//定义echoDate2操作$this->__dispatch_map['echoDate2']=数组('in'=>数组('inDate'=>'dateTime'),'out'=>阵列('outDateWrap'=>'{http://www.optimizer.com/soap}SOAPDateWrap“));}函数__dispatch($methodname){if(isset($this->__dispatch_map[$methodname]))返回$this->__dispatch_map[$methodname];返回NULL;}函数echoDate1($inDate){$outDate=$inDate;返回新的SOAP_Value('outDate','dateTime',$outDate);}函数echoDate2($inDate){$outDate=$inDate;返回新的SOAP_Value('outDateWrap','{http://www.optimizer.com/soap}SOAPDateWrap',新SOAPDateWrap($outDate));}}require_once“Log.php”;require_once“SOAP/Server.php”;$log=&log::singleton('file','/tmp/echoDate.log','echoDate',array('mode'=>0666),log_INFO);$server=新的SOAP_server;$server->_auto_translation=true;$soapclass=新的SOAPEchoDateService();$server->addObjectMap($soapclass,'urn:SOAPEchoDate');if(isset($_SERVER['REQUEST_METHOD'])&&$_SERVER['REQUEST_METHOD']=='POST'){$log->log(“[”.getmypid().“]请求:\n”$HTTP_RAW_POST_DATA);对象开始();$服务器->服务($HTTP_RAW_POST_DATA);$log->log(“[”.getmypid().“]响应:\n”.ob_get_contents());ob_end_flush();}其他{require_one“SOAP/Disco.php”;$disco=新SOAP_disco_Server($Server,'SOAPEchoDate');标题(“内容类型:text/xml”);if(isset($_SERVER['QUERY_STRING'])&&strcasecmp($_SERVER['QUERY_STRING'],'wsdl')==0){echo$disco->getWSDL();}其他{echo$disco->getDISCO();}出口;}?>预期结果:----------------从echoDate2()操作返回的SOAPDateWrap复杂类型的日期化成员应为xsd:dateTime类型,如下所示:<?xml version=“1.0”encoding=“UTF-8”?><SOAP-ENV:信封xmlns:SOAP-ENV=“网址:http://schemas.xmlsoap.org/soap/envelope/"xmlns:xsd=“http://www.w3.org/2001/XMLSchema"xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance"xmlns:SOAP-ENC=“http://schemas.xmlsoap.org/soap/encoding/"xmlns:ns4=“http://www.optimizer.com/soap"xmlns:ns5=“urn:SOAPEchoDate”SOAP-ENV:encodingStyle=“http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:车身><ns5:echoDate2响应><outDateWrap xsi:type=“ns4:SOAPDateWract”>2004-05-14T10:21:18.6939682+08:00</SOAP-ENV:车身></SOAP-ENV:信封>实际结果:--------------从echoDate2()操作返回的SOAPDateWrap复杂类型的日期化成员为xsd:string类型,如下所示:<?xml version=“1.0”encoding=“UTF-8”?><SOAP-ENV:信封xmlns:SOAP-ENV=“网址:http://schemas.xmlsoap.org/soap/envelope/"xmlns:xsd=“http://www.w3.org/2001/XMLSchema"xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance"xmlns:SOAP-ENC=“http://schemas.xmlsoap.org/soap/encoding/"xmlns:ns4=“http://www.optimizer.com/soap"xmlns:ns5=“urn:SOAPEchoDate”SOAP-ENV:encodingStyle=“http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:车身><ns5:echoDate2响应><outDateWrap xsi:type=“ns4:SOAPDateWract”>2004-05-14T10:21:18.6939682+08:00</SOAP-ENV:车身></SOAP-ENV:信封>

评论

 elmerproductions网站上的错误1(马腾岛)
我在dateTime上也有同样的问题(在另一种类型上也有),所以这在PEAR::SOAP 0.9.4版中显然仍然是一个问题。然而,使用SOAP_Value类有一个解决方法。我的类型是一个包含多个字段(a、b、c)的struct数组。假设“b”是dateTime。要正确返回此值,我使用以下方法定义要返回的数组的单个元素:函数get_element($aval、$bval、$cval){返回数组(“a”=>$aval,//简单值自动工作“b”=>新的SOAP_Value('b','dateTime',$bval),//更复杂的类型需要使用SOAP_Value类“c”=>$cval//简单值自动工作);}当这样的元素作为对SOAP请求的响应返回时,“b”正确地返回为dateTime而不是字符串。
 [2008-03-10 12:38 UTC]直到(直到Klampaeckel)
13:32<wsdl-help>i did'registrationDate'=>new SOAP_Value('registationDate','dateTime',date('c')),13:33<wsdl-help>所以基本上这两种方法都是相互关联的,并且都有效。非常感谢你给了我一些提示,让我走上正轨不确定这是否是一个修复,但我们基本上在IRC上找到了以下内容。希望它有助于尽快解决这个问题。
 [2008-07-12 18:41 UTC]医生(丹尼尔·奥康纳)
我想您不想用更新版本的包/php来尝试它
 [2008-07-29 21:54 UTC]尤诺什(简·施奈德)
这似乎仍在发生。错误号14421对此进行了测试。