Reputation: 432
I'm trying to create JIRA defects through JSON files using REST API. The reason is to create large scale of defects rather than creating one by one through the JIRA UI.
The following is the code.
public class JiraBug {
@SuppressWarnings({ "unchecked", "rawtypes", "resource", "deprecation" })
public static String makeRequest(String path, JSONObject holder)
throws Exception {
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPost httpost = new HttpPost(path);
StringEntity se = new StringEntity(holder.toString());
httpost.setEntity(se);
httpost.setHeader("Accept", "application/json");
httpost.setHeader("Content-type", "application/json");
ResponseHandler responseHandler = new BasicResponseHandler();
String response = httpclient.execute(httpost, responseHandler);
return response;
}
public static void main(String[] args){
try {
JSONObject jsonobj = new JSONObject();
File jsonFile = new File("JiraBug.json");
if (jsonFile.exists()){
InputStream is = new FileInputStream("JiraBug.json");
String jsonTxt = IOUtils.toString(is, "UTF-8");
jsonobj = new JSONObject(jsonTxt);
}
makeRequest("https://*<<Our_Company_JIRA_Server>>*/rest/api/2/issue",jsonobj);
} catch (Exception e) {
e.printStackTrace();
}
}
}
The following is the JSON Object.
{
"fields": {
"project":
{
"key": "TRAINING"
},
"summary": "Test Summary",
"description": "Test Description",
"issuetype": {
"name": "Bug"
},
"priority": {
"id":"2"
}
} }
I'm getting a Bad request exception.
org.apache.http.client.HttpResponseException: Bad Request
at org.apache.http.impl.client.AbstractResponseHandler.handleResponse(AbstractResponseHandler.java:69)
at org.apache.http.impl.client.BasicResponseHandler.handleResponse(BasicResponseHandler.java:65)
at org.apache.http.impl.client.BasicResponseHandler.handleResponse(BasicResponseHandler.java:51)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:222)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:164)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:139)
at Jira.Auto_Defect.JiraBug.makeRequest(JiraBug.java:58)
at Jira.Auto_Defect.JiraBug.main(JiraBug.java:70)
Is there anything that I'm missing here?
Upvotes: 0
Views: 719
Reputation: 4647
Instead of using DefaultHttpClient
you could very well use Spring
's RestTemplate
to achieve the same:
You could refer to my answer from a similar question where I have provided the working code.
Java Program to fetch custom/default fields of issues in JIRA
Hope this answers your question well!
Upvotes: 1