0

如何在 PHP 中存储 SOAP 返回值?

我的 PHP 代码使用 SOAP。

    <?php
        $client = new SoapClient("http://rscnagahrd/OracleWS/Oracle.asmx?WSDL");
        $result = $client->getFoods();
        echo $result;
    ?>

当我尝试运行应用程序时,出现错误:

可捕获的致命错误:第 4 行的 C:\apache\htdocs\food.php 中的类 stdClass 的对象无法转换为字符串

我这样做是为了以后可以解析 xml 代码:

$dom = new DomDocument;
$dom->preserveWhiteSpace = FALSE;
$dom->loadXML($result);
$params = $dom->getElementsByTagName('FOOD_ID');
    foreach ($params as $param) {
    echo $param -> nodeValue, PHP_EOL;
}
4

1 回答 1

2

Soapclient对象已经将 XML 解析为响应结构(var_dump($result)请参阅)。如果你想将它存储为一个字符串,你必须以某种方式再次将它变成一个字符串(serialize()如果只需要 PHP 代码读取它,json_encode()如果你想让它更加语言不可知是通常的嫌疑人)。

如果您需要存储原始 xml响应,请将array('trace' => true);其作为第二个参数添加到SoapClient的构造函数中,然后调用$client->__getLastRequest();.

但是,如果您只想要使用的答案,那么$result已经为您解析了响应。

于 2013-06-30T09:00:54.957 回答