脚本宝典收集整理的这篇文章主要介绍了在PHP SoapClient中的SOAP响应的开头和结尾附加了不需要的字符串,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
try { $soap = new SoapClient($wsdl,$options); $data = $soap->GetXYZ($params); } catch(Exception $e) { $Lastresponse = $soap->__getLastResponse(); }
但是当我查看catch块中的$Lastresponse变量时,我发现它如下:
—— = _ Part_1134075_393252946.1482317378966 Content-tyPE:application / xop XMl;字符集= UTF-8; type =“text / xML”< SOAP-env:Envelope xmlns:SOAP-ENV =“http://schemas.xmlsoap.org/soap/envelope/”> < SOAP-ENV:页眉/> < SOAP-ENV:身体与GT; ……所有有效数据……< / SOAP-ENV:Body> < / SOAP-ENV:信封> —— = _ Part_1134075_393252946.1482317378966–
注意:我使用的$options参数是:
$options = array( 'uri'=>'http://schemas.xmlsoap.org/soap/envelope/',//'style'=>SOAP_RPC,//'use'=>SOAP_encoded,'soap_version'=>SOAP_1_1,'cache_wsdl'=>WSDL_CACHE_NONE,'connection_timeout'=>15,'trace'=>true,'encoding'=>'UTF-8','exceptions'=>true );
经过调查,似乎SoapClient无法解析多部分消息,这就是您获得该异常的原因.
解决方案是扩展SoapClient以使用正则表达式或其他字符串函数提取XML内容.
以下是this page的示例:
class MySoapClient extends SoapClient { public function __doRequest($request,$location,$action,$version,$one_way = 0) { $response = parent::__doRequest($request,$one_way); $start = strpos($response,'<?xml'); $end = strrpos($response,'>'); return substr($response,$start,$end-$start+1); } }
以上是脚本宝典为你收集整理的在PHP SoapClient中的SOAP响应的开头和结尾附加了不需要的字符串全部内容,希望文章能够帮你解决在PHP SoapClient中的SOAP响应的开头和结尾附加了不需要的字符串所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。