Mantis Bug Tracker SOAP API响应XML错误

时间:2014-02-06 13:02:13

标签: soap response mantis

我正在使用Mantis Bug Tracker SOAP API,但不幸的是每次它都会返回给我的信息

looks like we got no XML document”,

追踪最后一个回复后我得到了以下消息

"<?xml version="1.0" encoding="ISO-8859-1"?><SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
  xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body><SOAP-ENV:Fault><faultcode xsi:type="xsd:string">Client</faultcode><faultactor xsi:type="xsd:string"></faultactor><faultstring xsi:type="xsd:string">Issue does not exist.</faultstring><detail xsi:type="xsd:string"></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>"

我希望,我恢复了xml,看起来在开头添加了 "" 字符。

删除这些字符时,任何线索或帮助都会很棒。

连接MANTIS SOAP API SERVER的代码

<?php
    $c = new \SoapClient("http://dev06/api/soap/mantisconnect.php?wsdl", array('trace'=> true, 'encoding'=>' UTF-8', 'soap_version'=>1.2));
    $username = "xxxxx";
    $password = "xxxxx";
    try {
        $c->mc_issue_get(trim($username), trim($password), 2331);
    } catch (SoapFault $exception) {
        var_dump($c->__getLastResponse());
    }
    ?>

2 个答案:

答案 0 :(得分:0)

我认为您的代码没有任何问题,只需稍加修改即可在我的环境中完美运行:

$c = new \SoapClient("http://localhost/demo/mantisbt-1.2.15/api/soap/mantisconnect.php?wsdl", array('trace'=> true, 'encoding'=>' UTF-8', 'soap_version'=>SOAP_1_2));
    $username = "XXXXXXXX";
    $password = "XXXX";
    try {
        $issue = $c->mc_issue_get(trim($username), trim($password), 31);
        var_dump($issue);
    } catch (SoapFault $exception) {
        var_dump($c->__getLastResponse());
    }

可能是soap_version,因此您可以尝试使用soap_version = SOAP_1_1

答案 1 :(得分:0)

哦......!

终于得到了解决方案。它非常简单。

首先,mantis SOAP API代码库包含的代码可能超过20,000行。我认为有些人正在打印一些BOM字符。

所以最好的解决方案是,只需使用以下功能,

ob_clean();

此功能必须在

中使用
/library/nusoap/nusoap.php

因为此文件有

send_response()

那个打印输出有效负载,所以只需在send_response()函数的开头使用ob_clean()。

谢谢并希望它能帮助别人。