我正在编写一个小node.js脚本,它将运行多个命令&如果任何一个失败,它将报告一个问题。我使用以下代码报告mantis bugtracker中的问题。 Mantis bug跟踪器附带了一堆SOAP api来做这样的事情。 http://www.mantisbt.org/bugs/api/soap/mantisconnect.php?wsdl#op.idp90022480
var soap = require('soap');
var url = 'http://localhost/mantisbt-1.2.19/api/soap/mantisconnect.php?wsdl';
var user = 'administrator';
var password = 'root';
var args = {
username: user,
password: password,
project: {
id: 1
},
category: 'General',
summary: 'Test summary',
description: 'test description'
};
soap.createClient(url, function(err, client) {
client.mc_issue_add(args, function(err1, result) {
if(err1)
console.log( err1 );
else
console.log('Issue successfully created');
});
});
但是我收到了错误日志:
<faultstring>Project \'\' does not exist.</faultstring>
我有一个id为1的项目,&amp;我可以使用php创建相同数据的问题。我的理解是项目ID没有正确发送。等效的PHP代码如下。
$c = new SoapClientDebug("http://localhost/mantisbt-1.2.19/api/soap/mantisconnect.php?wsdl", ['trace' => true]);
$username = 'administrator';
$password = 'root';
$issue = array (
'summary' => 'PHP test issue',
'description' => 'PHP test description',
'project'=> array(
'id'=>1
),
'category'=>'General',
);
$c->mc_issue_add($username, $password, $issue);
php代码功能正常。
答案 0 :(得分:1)
你的args应该是这样的:
var args = {
username: user,
password: password,
issue: {
project: {
id: 1
},
category: 'General',
summary: 'Test summary',
description: 'test description'
}
};