gpt4 book ai didi

PHP SoapClient 没有将 XML 响应解释为数组

转载 作者:搜寻专家 更新时间:2023-10-31 21:14:55 25 4
gpt4 key购买 nike

我正在努力让 PHP 的内置 SoapClient 解释从我尝试调用的 Web 服务返回的响应。

SoapUI 能够查询此 soap 方法并返回良好的结果。我还能够让 nusoap_client 返回正确的结果(但由于其他原因我无法使用 nusoap 并且认为我坚持使用 SoapClient).

使用 SoapClient,我可以看到返回的数据看似不错,但结果并没有被解析并分解为易于使用的值数组,而是将 XML 响应字符串填充到单个对象中的字段(标记为“任何”)。

我的代码和结果如下所示:

$client = new SoapClient($url);
$results = $client->GetPropertiesByProjectAndContractStatus($params);
var_dump($results);

上面代码的输出如下:

object(stdClass)[3]
public 'GetListingsByGUIDResult' =>
object(stdClass)[4]
public 'any' => string '<xs:schema xmlns="" ........ (long xml here) ....

现在,也许我正在使用的服务正在返回一些有问题的 xml(尽管在我看来它似乎很好)。 nusoapSoapUI 使用起来都没有问题。

所以我想知道 SoapClient 有什么不同。

最佳答案

我有一个函数可以获取该结果并将其转换为 dom 对象,因此您可以使用 dom 函数来提取数据。

protected function getElementsFromResult($elementName, $simpleresult) {
$dom = new DOMDocument ();
$dom->preserveWhiteSpace = FALSE;
if ($simpleresult == null) {
echo 'null';
return null;
} else {
$dom->loadXML ( $simpleresult->any );
return $dom->getElementsByTagName ( $elementName );
}

$elementName 是您希望从结果中获取的元素的名称,$simpleresult 是包含“任意”字符串的对象。

关于PHP SoapClient 没有将 XML 响应解释为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11067952/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com