更新时间条目: http://www.redmine.org/projects/redmine/wiki/Rest_TimeEntries#Updating-a-time-entry 结果始终为404
我正在使用Redmine 3.4.6.stable并正在使用: PUT / time_entries / [id] .xml
其他操作,例如: 创建时间条目 正在工作。
此外,Delete无法正常工作,我尝试使用JSON代替XML,但响应相同。
然后我像这样删除扩展名: / time_entries / [id] 我得到了422,但是响应给了我一个完整的HTML页面,其中包含:
无效的表单真实性令牌。
我不是Ruby / Rails开发人员,但是在routes.rb中,我可以看到:
match '/time_entries/:id', :to => 'timelog#destroy', :via => :delete, :id => /\d+/
这是以下各项的唯一条目: / time_entries /:id
因此这意味着该文档位于: http://www.redmine.org/projects/redmine/wiki/Rest_TimeEntries#Updating-a-time-entry 已过时,没有更新时间条目的终点。 这是正确的吗?
我还向Redmine提交了罚单: http://www.redmine.org/issues/31288 但是我想我会更快地得到答案/帮助。
这是我用来更新问题的Groovy代码:
def baseUrl = new URL("${Config.host}/time_entries/${timeEntry.key}.xml?key=${Config.redmineKey}")
new HTTPBuilder(baseUrl).request(Method.PUT, ContentType.XML) {
body = "<time_entry><id>9956</id><project_id>25</project_id><issue_id>${timeEntry.key}</issue_id><spent_on>${spentOnDate}</spent_on><hours>${new Date(timeEntry.value.toInteger()).format("HH:mm")}</hours><activity_id>9</activity_id><comments></comments></time_entry>"
response.success = { resp, xml ->
println "Success! ${resp.status}"
}
response.failure = { resp ->
println "Request failed with status ${resp.status}"
def outputStream = new ByteArrayOutputStream()
resp.entity.writeTo(outputStream)
def errorMsg = outputStream.toString('utf8')
println errorMsg
}
}
答案 0 :(得分:0)
以下代码与nodejs一起使用,并使用xml格式:
const http = require('http')
var body = ' <?xml version="1.0" ?>' +
'<time_entry><id>1</id><issue_id>1</issue_id><spent_on>2019-02-02</spent_on><hours>9.0</hours></time_entry>';
var postRequest = {
host: "localhost",
path: "/time_entries/1.xml",
port: 3000,
method: "PUT",
headers: {
'Content-Type': 'text/xml',
'X-Redmine-API-Key': '95228de814b46d8980447c00591460598990d469',
'Content-Length': Buffer.byteLength(body)
}
};
var buffer = "";
var req = http.request( postRequest, function( res ) {
console.log( res.statusCode );
var buffer = "";
res.on( "data", function( data ) { buffer = buffer + data; } );
res.on( "end", function( data ) { console.log( buffer ); } );
});
req.on('error', function(e) {
console.log('problem with request: ' + e.message);
});
req.write( body );
req.end();
确保正确配置postRequest参数,例如X-Redmine-API-key 路径,主机,端口和方法...