【问题标题】:How to Create a Issue into JIRA thorugh REST api in java?如何在 Java 中通过 REST api 在 JIRA 中创建问题?
【发布时间】:2016-11-16 20:29:37
【问题描述】:

我正在使用我的 json 数据向 JIRA 发送 POST 请求以创建项目,但我无法在 JIRA 中创建项目,我试图从 Fiddler 中查看错误,但出现以下错误。我正在使用java。

我正在从以下代码发布 json 数据,请指出我错了什么以及哪里错了?

   public  static  void createTicket()throws  Exception{

    HttpClient client = new DefaultHttpClient();
    try {
        HttpPost post = new HttpPost(webPage);
        Base64 b = new Base64();

        String encoding = b.encodeAsString(new String("" + name + ":" + password + "").getBytes());
        post.addHeader("Authorization","Basic "+encoding);
        System.out.println(post.toString());


        StringEntity params =new StringEntity("{'fields':{'project':{'key':'LCH-12'},'summary':'Sample issue','description':'Creating an issue via REST API','issuetype':{'name':'Bug'}}}");

       post.setHeader("Content-type", "application/json");
       post.setEntity(params);
        HttpResponse httpResponse = client.execute(post);

        System.out.println(httpResponse.toString());

    }
    catch(Exception e)
    {

        System.out.println(e);
    }
    finally {
        httpClient.getConnectionManager().shutdown(); //Deprecated
    }

}

错误信息如下:

POST http://localhost:8080/rest/api/latest/issue HTTP/1.1 [内容类型:文本/纯文本;字符集=ISO-8859-1,内容长度:140,分块:假] HTTP/1.1 400 错误请求 [服务器:Apache-Coyote/1.1,X-AREQUESTID:585x38x1,X-ASEN:SEN-L8200978,Set-Cookie:JSESSIONID=2DFEB40B67B19BAFAFE81CF8A30B5A88;路径=/; HttpOnly, X-Seraph-LoginReason: OK, Set-Cookie: atlassian.xsrf.token=B6XG-UN93-PXWZ-FOQK|f80007dcf150dceaa1d5f561aab3d364a3598178|lin; Path=/, X-ASESSIONID: 5i51ds, X-AUSERNAME: vinuvish1, Cache-Control: no-cache, no-store, no-transform, X-Content-Type-Options: nosniff, Content-Type: application/json; charset=UTF-8,传输编码:分块,日期:星期四,2016 年 7 月 14 日 04:15:23 GMT,连接:关闭] org.apache.http.conn.BasicManagedEntity@4b952a2d

【问题讨论】:

标签: java json jira apache-httpclient-4.x jira-rest-java-api


【解决方案1】:

根据您发布的代码sn-p,问题在于JSON 不能容忍单引号作为字段分隔符。

到目前为止,Java 系统中最简单的方法是使用众多用于 Java 的 JSON 库之一,以确保引用 JSON 期望的内容。

另外,作为一个友好的 FYI,没有必要做new String("" + name + ":" + password + ""),因为 Java 会自动从字符串文字和值的连接中创建一个新的字符串。所以String str = ""+name+":"+password; 就是你所需要的。然后,如果您需要byte[] 进入StringEntity,则可以致电str.getBytes(),尽管new StringEntity(str) 会更清晰。

【讨论】:

  • 感谢您的回复,我的要求是我需要使用 json 和 rest api 在 jira 中创建问题,但我收到 400 https 错误我认为我的字符串实体有错误我该如何更改我的字符串实体跨度>
  • 我很抱歉不够明确。将'}}}"); 更改为'}}}".replaceAll("'", "\""));,它应该会让你更接近你的目标
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-25
  • 2019-12-21
  • 2015-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多