Hi,
I am trying to use the below code to create new project issue in my jira,
using System.Text; using System.Net.Http; using System.Json; using System.Web.Script.Serialization; namespace Test { class Class1 { public void CreateIssue() { string message = "Hai \"!Hello\" "; string data = "{\"fields\":{\"project\":{\"key\":\"TP\"},\"summary\":\"" + message + "\",\"issuetype\":{\"name\": \"Bug\"}}}"; System.Net.Http.HttpClient client = new System.Net.Http.HttpClient(); client.DefaultRequestHeaders.ExpectContinue = false; client.Timeout = TimeSpan.FromMinutes(90); byte[] crdential = UTF8Encoding.UTF8.GetBytes("adminName:adminPassword"); client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", Convert.ToBase64String(crdential)); client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); System.Net.Http.HttpContent content = new StringContent(data, Encoding.UTF8, "application/json"); try { client.PostAsync("http://localhost:8080/rest/api/2/issue",content).ContinueWith(requesTask=> { try { HttpResponseMessage response = requesTask.Result; response.EnsureSuccessStatusCode(); response.Content.ReadAsStringAsync().ContinueWith(readTask => { var out1 = readTask.Result; }); } catch (Exception exception) { Console.WriteLine(exception.StackTrace.ToString()); Console.ReadLine(); } }); } catch (Exception exc) { } } } }
It throws the issue like below:
"{\"errorMessages\":[\"Unexpected character ('!' (code 33)): was expecting comma to separate OBJECT entries\\n at [Source: org.apache.catalina.connector.CoyoteInputStream@1ac4eeea; line: 1, column: 52]\"]}"
But i use the same json file in Firefox Poster , i have created the issue.
Json file : {"fields":{"project":{"key":"TP"},"summary":"Hai \"!Hello\" ",\"issuetype\":{\"name\": \"Bug\"}}}"
The issue is that you are not JSON-encoding the message when concatenating it into the string.
This line of Java:
string message = "Hai \"!Hello\" ";
Will put this value into memory:
Hai "!Hello"
And hence this line of Java:
string data = "{\"fields\":{\"project\":{\"key\":\"TP\"},\"summary\":\"" + message + "\",\"issuetype\":{\"name\": \"Bug\"}}}";
Will put this value into memory:
{"fields":{"project":{"key":"TP"},"summary":"Hai "!Hello"","issuetype":{"name": "Bug"}}}
You can see there's a syntax error there in the summary part - the double quotes inside the message are breaking your JSON.
Rather than generating JSON by string concatenation, which is pretty much guaranteed to give you functionality and security issues, I recommend using a JSON library instead. We use Jersey in JIRA but any would do.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.