我正在使用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());
}
?>
答案 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()。
谢谢并希望它能帮助别人。