简体   繁体   中英

Why the error in coming while creating a JIRA issue using REST API (C#)?

I am working on a requirement where I need to create multiple issues in one go by Using the REST API. However, I start with uploading a single issue because I am new in API integration. I write few lines of code in c#. Here is my code:

static void Main(string[] args)
    {
        JavaScriptSerializer jss = new JavaScriptSerializer();
        JiraCreateIssueRequest jcir = new JiraCreateIssueRequest();
        //////////////////////////////////////////////////////////////////
        string sUsername = "aaa@xyz.com";
        string sPassword = "TestPassword";
        string uri = @"https://domain.atlassian.net/rest/api/2/issue";
        Uri address = new Uri(uri);
        HttpWebRequest request;
        //HttpWebResponse response = null;
        StreamReader sr;
        string sData = null;
        string returnXML = string.Empty;
        if (address == null) { throw new ArgumentNullException("address"); }
        //jcir.project.ID = 100;
        //jcir.Summary = "This issue is created by JIRA REST Api";
        //jcir.Description = "This issue is created by JIRA REST Api";
        //jcir.IssueType.ID = 1;
        sData = @"{""fields"":{""project"":{""key"": ""SITT""},""summary"": ""REST API Uploading"",""description"":""Creating an issue via REST API"",""issuetype"": {""name"": ""Test""}}}";
        //sData = jcir.ToString();
        try
        {
            // Create and initialize the web request
            request = WebRequest.Create(address) as HttpWebRequest;
            request.Method = "POST";
            request.ContentType = "application/json";
            // Add the Authorization header to the web request
            request.Credentials = new NetworkCredential(sUsername, sPassword);
            //Write Data
            if (sData != null)
            {
                byte[] byteData = UTF8Encoding.UTF8.GetBytes(sData);
                // Set the content length in the request headers
                request.ContentLength = byteData.Length;
                // Write data
                using (Stream postStream = request.GetRequestStream())
                {
                    postStream.Write(byteData, 0, byteData.Length);
                }
                // Get response
                using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
                {
                    // Get the response stream
                    StreamReader reader = new StreamReader(response.GetResponseStream());
                    string str = reader.ReadToEnd();
                }
            }
        }
        catch (WebException wex)
        {
            // This exception will be raised if the server didn't return 200 - OK
            // Try to retrieve more information about the error
            if (wex.Response != null)
            {
                using (HttpWebResponse errorResponse = (HttpWebResponse)wex.Response)
                {
                    try
                    {
                        string sError = string.Format("The server returned '{0}' with the status code {1} ({2:d}).",
                        errorResponse.StatusDescription, errorResponse.StatusCode,
                        errorResponse.StatusCode);
                        sr = new StreamReader(errorResponse.GetResponseStream(), Encoding.UTF8);
                        returnXML = sr.ReadToEnd();
                    }
                    finally
                    {
                        if (errorResponse != null) errorResponse.Close();
                    }
                }
            }
            else
            {
                throw new Exception(wex.Message);
            }
        }
    }

    public class JiraCreateIssueRequest
    {
        protected JavaScriptSerializer jss = new JavaScriptSerializer();

        public JiraProject project = new JiraProject();
        public string Summary { get; set; }
        public string Description { get; set; }
        public JiraIssueType IssueType = new JiraIssueType();

        public override string ToString()
        {
            return jss.Serialize(this);
        }
    }

    public class JiraCreateIssueResponse
    {


    }

    public class JiraProject
    {
        public int ID { get; set; }
        //public string Key { get; set; }
    }

    public class JiraIssueType
    {
        public int ID { get; set; }
        //public string Name { get; set; }
    }

But when I am running the above code, I am getting the '400' error. I googled it and found that this usually this error comes when the URL or the Username/Password are incorrect. I cross checked both the things however its correct.

May I know why this error is coming or what will be the resolution of the problem?

Your password is not your login password, it's an API token that you get from here:

https://id.atlassian.com/manage/api-tokens

Generate a token, then use that as your password.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM