使用RESTAPI重新挖掘创建问题

使用RESTAPI重新挖掘创建问题,rest,redmine,redmine-api,Rest,Redmine,Redmine Api,我试图通过RESTful在Redmine(v2.3.4)中创建一个问题。我已经阅读了文档,并尝试了不起作用的示例(HTTP代码:404) POSThttp://easyredmine.digitronic.com/issues.xml 1. 例子 4. 然后我尝试了这个,它成功了: POST http://easyredmine.digitronic.com/projects/isda/issues.xml <?xml version="1.0"?> <issue>

我试图通过RESTful在Redmine(v2.3.4)中创建一个问题。我已经阅读了文档,并尝试了不起作用的示例(HTTP代码:404)

POSThttp://easyredmine.digitronic.com/issues.xml
1.
例子
4.
然后我尝试了这个,它成功了:

POST http://easyredmine.digitronic.com/projects/isda/issues.xml
<?xml version="1.0"?>
<issue>
    <project_id>1</project_id>
    <subject>Example</subject>
    <priority_id>4</priority_id>
</issue>
POSThttp://easyredmine.digitronic.com/projects/isda/issues.xml
1.
例子
4.

我使用的是taskadapter Redmine API,它以第一种形式发送请求。

在第一种情况下找不到404,因为必须添加问题的项目(ID=1)不存在。在第二种情况下,元素project_id中的值被忽略,因为您已经在URL中指定了项目标识符。

您必须指定一个内容类型头,否则您将得到一个404

我将redmine rest api与ruby结合使用,并且create方法对我有效。我使用json而不是xml。我的web服务如下所示

id=-1
url = Configuration.redmine+"/issues.json"
uri = URI.parse(url)
req = Net::HTTP::Post.new(uri.request_uri)
req.basic_auth(user, pass)
req["Content-Type"] = "application/json"

payload = {
    issue: {
        project_id:project_id,
        tracker_id:tracker_id,
        status_id:status_id,
        priority_id:priority_id,
        subject:subject,
        description:description,
        fixed_version_id:fixed_version_id,
        author_id:author_id,
    }
}
req.body = payload.to_json

http = Net::HTTP.new(uri.host, uri.port)

response = http.request(req)
if response.code=="201"
  data = JSON.parse(response.body)
  id=data["issue"]["id"]
end

 return id
end

这是ruby代码。希望对您有所帮助

您启用过吗?谢谢您的回复。我已经执行了这个请求:GET,我收到了一个id为39的项目。当我尝试使用ID 39发出请求时,我得到了相同的错误。如果您得到404或没有,请尝试获取。也可以使用项目字符串标识符代替项目数字ID。最后,查看Redmine日志文件,寻找任何线索。
id=-1
url = Configuration.redmine+"/issues.json"
uri = URI.parse(url)
req = Net::HTTP::Post.new(uri.request_uri)
req.basic_auth(user, pass)
req["Content-Type"] = "application/json"

payload = {
    issue: {
        project_id:project_id,
        tracker_id:tracker_id,
        status_id:status_id,
        priority_id:priority_id,
        subject:subject,
        description:description,
        fixed_version_id:fixed_version_id,
        author_id:author_id,
    }
}
req.body = payload.to_json

http = Net::HTTP.new(uri.host, uri.port)

response = http.request(req)
if response.code=="201"
  data = JSON.parse(response.body)
  id=data["issue"]["id"]
end

 return id
end