我使用visual (c#)在Atlassian.NET SDK的帮助下使用Jira REST API,并试图构建这样的模型:
搜索功能很好,问题是改变它的状态。这是我的密码:
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返回错误。
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();发布于 2019-12-30 11:53:34
经过深入的研究,我终于找到了正确的途径,那就是http请求。
如果有人有问题,这里有个代码:
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);
}
}https://stackoverflow.com/questions/59478221
复制相似问题