首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过Jira REST,Atlassian.Net SDK将问题状态更改为完成

通过Jira REST,Atlassian.Net SDK将问题状态更改为完成
EN

Stack Overflow用户
提问于 2019-12-25 12:03:35
回答 1查看 1.3K关注 0票数 1

我使用visual (c#)在Atlassian.NET SDK的帮助下使用Jira REST API,并试图构建这样的模型:

  • 与项目一起搜索票证,发布摘要和状态;
  • 如果发现问题,我想把它的状态从“做”改为“做”;
  • 如果没有发现任何问题,那就什么也不做。

搜索功能很好,问题是改变它的状态。这是我的密码:

代码语言:javascript
复制
static async System.Threading.Tasks.Task Main(string[] args)
{

            ServicePointManager.Expect100Continue = true;
            ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072; //TLS 1.2

            try
            {

                // Connection to JIRA using REST client
                var jira = Jira.CreateRestClient("https://XXX.atlassian.net", "user", "token");

                // LINQ syntax for retrieving issues
                var issue = (from i in jira.Issues.Queryable
                             where i.Project == "QA" && i.Summary == "Summary" && i.Status == "To Do"
                             orderby i.Created
                             select i).First();

                await issue.SaveChangesAsync();

                string ticketid = issue.Key.Value;
                string ticketsummary = issue.Summary;
                string ticketkey = issue.JiraIdentifier;

                //Updating found issue
                var closeticket = await jira.Issues.GetIssueAsync(ticketid);
                closeticket.Status = "Done";

                await closeticket.SaveChangesAsync();                

            }
            catch (Exception ex) { /*Result: SUCCESS [no issues found]*/ }
      }

使用这段代码,我试图在项目“QA”中搜索,其中问题摘要是“摘要”,状态是“要做”。然后,我想关闭它的地位,从“做”到“完成”。但是,我在closeticket.Status =“Done”行上出现了错误;使用文本:

错误CS0200属性或索引器'Issue.Status‘不能分配给--它是只读的

请给我一些建议,否则我就要上吊了,…

提前谢谢你。

编辑:我忘了提到,我也试图在httpclient的帮助下进行状态更改。但是有一个问题,当我连接到发出转换时,它用状态代码404返回错误。

代码语言:javascript
复制
 var handler = new HttpClientHandler();
            handler.AllowAutoRedirect = true;
            handler.Proxy = new WebProxy("https://XXX.atlassian.net", true, null, CredentialCache.DefaultNetworkCredentials);
            // need to pass a valid username + password to JIRA
            var jiraCredentials = UTF8Encoding.UTF8.GetBytes("user:token");
            var httpClient = new HttpClient(handler);
            httpClient.MaxResponseContentBufferSize = int.MaxValue;
            httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(jiraCredentials));
            httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));


            string transitionURL = "https://XXX.atlassian.net" + "/rest/api/2/issue/" + "QA-10" + "/transitions?expand=transitions.fields";
            string jsonString = "{ \"update\":{},\"transition\": { \"id\": \"" + "31" + "\"}, \"fields\": { } }";
            var sContent = new StringContent(jsonString, Encoding.UTF8, "application/json");
            var httpClientt = new HttpClient();
            HttpResponseMessage transitionResponse = httpClientt.PostAsync(transitionURL, sContent).Result;
            httpClient.Dispose();
EN

回答 1

Stack Overflow用户

发布于 2019-12-30 11:53:34

经过深入的研究,我终于找到了正确的途径,那就是http请求。

如果有人有问题,这里有个代码:

代码语言:javascript
复制
 using (var httpClient = new HttpClient())
            {
                using (var request = new HttpRequestMessage(new HttpMethod("POST"), "https://XXX.atlassian.net/rest/api/2/issue/TST-4/transitions?expand=transitions.fields"))
                {
                    var base64authorization = Convert.ToBase64String(Encoding.ASCII.GetBytes("user:token"));
                    request.Headers.TryAddWithoutValidation("Authorization", $"Basic {base64authorization}");

                    request.Content = new StringContent("{\"transition\":{\"id\":\"31\"}}");
                    request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");

                    var response = await httpClient.SendAsync(request);
                }
            }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59478221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档