Just started at a new company and we all use Jira, the customers are determined to not use it as they don't like it so I have decided to build a simple Windows Form when they can both Log tickets and get Updates and Comments in a nice simple UI.
Now I have never done any coding before 2 weeks ago so it has been a struggle to get my head around both C# and Rest (Have made scripts for basic IT fixes but never anything as complex as this!)
Back onto point, Set up and got a Rest API set up with a Rest Client but everytime I try pull data from a ticket on Jira I get the error:
{"errorMessages":["You do not have the permission to see the specified issue.","Login Required"],"errors":{}}
Here is the code from the Form:
private void button3_Click_1(object sender, EventArgs e) { var client = new RestClient("https://jira.eandl.co.uk/rest/api/2/issue/ITREQ-" + textBox1.Text ); client.Authenticator = new SimpleAuthenticator("username", "abc", "password", "123"); var request = new RestRequest(Method.GET); request.AddParameter("token", "saga001", ParameterType.UrlSegment); // request.AddUrlSegment("token", "saga001"); request.OnBeforeDeserialization = resp => { resp.ContentType = "application/json"; }; var queryResult = client.Execute(request); Console.WriteLine(queryResult.Content); } And here is the code from the Rest Client itself:
public Restclient() { endPoint = string.Empty; httpMethod = httpVerb.GET; } private string logonAttempt; public string makeRequest() { string strResponseValue = string.Empty; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(endPoint); request.Method = httpMethod.ToString(); String authHeader = System.Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes(userName + ":" + userPassword)); request.Headers.Add("Authorization", authType.ToString() + " " + authHeader); HttpWebResponse response = null; try { response = (HttpWebResponse)request.GetResponse(); //Process the Response Stream... (Could be JSON, XML ot HTML etc...) using (Stream responseStream = response.GetResponseStream()) { if (responseStream != null) { using (StreamReader reader = new StreamReader(responseStream)) { strResponseValue = reader.ReadToEnd(); }//End of Stream Reader } }//end of Response Stream } catch (Exception ex) { strResponseValue = "(\"errorMessages\":[\"" + ex.Message.ToString() + "\"],\"errors\":{}}"; } finally { if(response != null) { ((IDisposable)response).Dispose(); } } return strResponseValue; } } } Now obviously I am expecting that I have missed something absolutely bigginer as like I said, I've never taken on a project like this before and had 0 experience.
Just looking for someone to bluntly tell me what I'm doing wrong
Changed to this as per answer:
private void button3_Click_1(object sender, EventArgs e) { var client = new RestClient("https://jira.eandl.co.uk/rest/api/2/issue/ITREQ-" + textBox1.Text ); client.Authenticator = new HttpBasicAuthenticator("username", "password"); var request = new RestRequest(Method.GET); string authHeader = Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes("cdale!" + ":" + "Chantelle95!")); request.AddHeader("Authorization", "Basic " + authHeader); request.OnBeforeDeserialization = resp => { resp.ContentType = "application/json"; }; var queryResult = client.Execute(request); Console.WriteLine(queryResult.Content); }