JIRA Rest API - 创建问题 - 错误的请求响应
JIRA Rest API - Create Issue - Bad request response
我正在尝试使用 REST API 通过 JSON 文件创建 JIRA 缺陷。原因是要创建大规模的缺陷,而不是通过 JIRA 一个一个创建 UI.
代码如下
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();
}
}
}
下面是JSON对象。
{
"fields": {
"project":
{
"key": "TRAINING"
},
"summary": "Test Summary",
"description": "Test Description",
"issuetype": {
"name": "Bug"
},
"priority": {
"id":"2"
}
}
}
我收到错误请求异常。
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)
这里有什么我遗漏的吗?
您可以使用 Spring
的 RestTemplate
而不是使用 DefaultHttpClient
来达到同样的效果:
您可以参考我在类似问题中的回答,我提供了工作代码。
希望这能很好地回答您的问题!
我正在尝试使用 REST API 通过 JSON 文件创建 JIRA 缺陷。原因是要创建大规模的缺陷,而不是通过 JIRA 一个一个创建 UI.
代码如下
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();
}
}
}
下面是JSON对象。
{
"fields": {
"project":
{
"key": "TRAINING"
},
"summary": "Test Summary",
"description": "Test Description",
"issuetype": {
"name": "Bug"
},
"priority": {
"id":"2"
}
} }
我收到错误请求异常。
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)
这里有什么我遗漏的吗?
您可以使用 Spring
的 RestTemplate
而不是使用 DefaultHttpClient
来达到同样的效果:
您可以参考我在类似问题中的回答,我提供了工作代码。
希望这能很好地回答您的问题!