在PHP中使用Microsoft.NET SOAP服务器数据集
我已经阅读了关于Stackoverflow的每一个问题,以及我能找到的每一篇谷歌文章 我需要使用由使用数据集的Microsoft系统提供的SOAP API 我已经到了我觉得我需要这样做的地步:在PHP中使用Microsoft.NET SOAP服务器数据集,php,soap,dataset,Php,Soap,Dataset,我已经阅读了关于Stackoverflow的每一个问题,以及我能找到的每一篇谷歌文章 我需要使用由使用数据集的Microsoft系统提供的SOAP API 我已经到了我觉得我需要这样做的地步: $soapClient = new soapclient($this->wsdlUrl,array('trace'=>true)); $soapResult = $soapClient->GetScheduledSectors(); $xmlResult = $soapClient-&g
$soapClient = new soapclient($this->wsdlUrl,array('trace'=>true));
$soapResult = $soapClient->GetScheduledSectors();
$xmlResult = $soapClient->__getLastResponse();
$xml = simplexml_load_string($xmlResult, NULL, NULL, "http://schemas.xmlsoap.org/soap/envelope/");
而不是使用这种方法:
$result = $soapClient->GetScheduledSectors();
$xml = simplexml_load_string($result->GetScheduledSectorsResult->any)
因为simplexml无法解析结果,因为它缺少soap响应头
然而,即使第一个方法没有抛出任何错误,我仍然会留下一个空对象,如下所示:
SimpleXMLElement Object
(
[Body] => SimpleXMLElement Object
(
)
)
我真的找不到任何关于如何使用Microsoft SOAP服务的连贯示例。我试着阅读MSDN的内容,但它专门针对他们的专有库,因此对其他人没有什么用处。遇到SOAP问题时,我会使用一些工具
在试过nusoap之后,我的头仍然撞在墙上。我最终决定手动解析MicrosoftXML 幸运的是,有一个脚本()帮我省去了从头开始做这件事的麻烦 该脚本工作并将Microsoft数据集响应输出到我可以使用的数组中
我觉得这个解决方案很糟糕,因为访问阵列将以硬编码的方式完成,但坦率地说,在我努力寻找替代解决方案之后,我认为这是一个必要的缺点。您能够共享wsdl url吗?遗憾的是,除了服务器白名单之外,它是403。这是为一家商业航空公司准备的。你有没有试过用一个像这样的非php客户端来实现它?我经常觉得这很有帮助。您还可以通过使用或类似的代理请求来切断PHP和服务之间的通信;但问题是,如果我对其使用simplexml\u load\u字符串,那么我会在底部得到空元素(XML不是空的)。如果使用soap结果对象,则会得到无效的XML,因为Microsoft的数据集,simplexml无法解析该XML。我需要找到一种方法来解析整个XML字符串,或者手动解析soap结果。我不想建议这样做,但是,有时候它会绕过SoapClient的限制。