【问题标题】:looks like we got no XML document看起来我们没有 XML 文档
【发布时间】:2013-12-26 13:00:10
【问题描述】:

我在使用 SOAP 和 PHP 时遇到了一些奇怪的问题。 相同的函数适用于小数据,但是当我的查询返回多于 X 行时,它会导致异常“未捕获的 SoapFault 异常:[Client] 看起来我们没有 XML 文档”。

这是我的代码:

<?php
$cliente = new SoapClient(null, array('location' => $myserver,'uri' => 'urn:webservices'));
?>
<select id="actividad" name="actividad" size="1" style="height:40px; width: 100%;">
<?php
$acs = $cliente->get_actividades();
foreach($acs as $actividad) {
echo "<option value='".$actividad['idactividad']."'>".$actividad['descripcion']."</option>";
}                                       
?>
</select>

这是服务器端:

public function get_actividades()
{
    $link = new mysqli($this->dbhost,$this->dbuser,$this->dbpass,$this->dbname);
    if (mysqli_connect_errno()) {
        return 0;
    }
    $query = "SELECT idactividad, codigo, descripcion FROM actividades";
    $datos = array();
    if ($stmt = $link->prepare($query)) {
        $stmt->execute();
        $stmt->store_result();
        $datos = $this->fetcharray($stmt);
        $stmt->free_result();
        $stmt->close();
        return $datos;
    } else { 
        return -1; 
    }           
}

该查询产生大约 37 行。如果我在该查询中添加 1 到 21 行之间的“LIMIT”子句,它可以正常工作,但更多会导致 no-xml-exception。

会不会是内存问题??谁能解决?

【问题讨论】:

    标签: php xml exception soap limit


    【解决方案1】:

    您必须回显它,而不是像您那样返回一个值。例如,如果您回显了$datos,它仍然不起作用,因为您需要显示一个符合 SOAP 的 XML 文档。您需要处理该行数组以将它们转换为 XML 文档。

    【讨论】:

      【解决方案2】:

      字节顺序标记 (BOM) 与 php 标记之前的空格具有相同的效果。在这里,您可以找到一个 PHP sn-p 来检测和删除 BOM。请务必将您的编辑器配置为不再插入 BOM。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-01-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-11
        相关资源
        最近更新 更多