Jira 接口对接:Java 调用


系统要跟JIRA对接,将本系统数据发送给jira,jira数据返回给本系统。

开始一头雾水怎么让数据传过去已什么形式存在,是存数据库呢还是怎么显示呢。研究半天发现其实只要将原数据作为json数据提供给jira接口,jira接口进行创建issue。

但前提在于要先创建项目。

jira的API 有很多有创建项目的,创建问题等。在线找到了6.1版本的API,根据这个文档可以查看是get还是post,需要哪种类型的json文件,返回值是什么。

了解了jira的api开始写本系统的接口,jira使用的是restful的接口,所以很好调用。

第一步使用了soapui将数据格式先调通,而在工具下发现了很多问题,但都有一定的返回值,详细描述了错误。原因1:json文件的错误;原因2:没有给定权限。

怎么解决呢?1.json格式先查看json格式在看内容。2.返回权限问题时,想到添加个header然后加个cookies。

所以在调用接口是先调用取cookies的接口,添加到header中,然后创建issue。

string seesionsjson =HttpPost("Post","xxxxx:8080/rest/auth/1/session", postuser, "");
 string issueNumber = HttpPost("Post", "xxxxxx/rest/api/2/issue", postBody, seesionsjson);
 public string HttpPost(string type, string url, string body, string header)
 {
 try
 {
 Encoding encoding = Encoding.UTF8;
 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
 request.KeepAlive = false;
 request.ProtocolVersion = HttpVersion.Version10;
 request.Method = type;
 request.Accept = "text/html, application/xhtml+xml, */*";
 request.ContentType = "application/json";
 if (header != "")
 {
 JObject obj = (JObject)JsonConvert.DeserializeObject(header);
 string ss = obj["session"]["name"].ToString() + "=" + obj["session"]["value"].ToString();
 request.Headers.Add("Cookie", ss); }
 byte[] buffer = encoding.GetBytes(body);
 request.ContentLength = buffer.Length; request.GetRequestStream().Write(buffer, 0, buffer.Length);
 HttpWebResponse response = (HttpWebResponse)request.GetResponse(); using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
 {
 return reader.ReadToEnd();
 }
 }
 catch (Exception ex)
 {
 return "";
 }
 }
 

在调通接口之后,jira中会创建相关的问题,问题类型为story或者task或者自定义的类型。

再说一下自定义的问题类型如何通过接口来创建该问题类型的问题。

首先要先在jira中创建问题类型,再分配给项目。然后通过  xxx/rest/api/2/issuetype 接口查看自定义问题类型的id,找到id即可。

从jira拿数据返回给本系统:

使用httpget方法与post类似,若需要登录后取值给定header值。

public string HttpGet(string Url, string header)
 {
 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
 request.Method = "GET";
 request.ContentType = "application/json; charset=UTF-8";
 if (header != "")
 {
 JObject obj = (JObject)JsonConvert.DeserializeObject(header);
 string ss = obj["session"]["name"].ToString() + "=" + obj["session"]["value"].ToString();
 request.Headers.Add("Cookie", ss);
 }
 HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream myResponseStream = response.GetResponseStream();
 StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
 string retString = myStreamReader.ReadToEnd();
 myStreamReader.Close();
 myResponseStream.Close();
 return retString;
 }
 

在使用类中

 string IssueJson= a.HttpGet("xxx:8008/jira/getissue?prokey=" + prokey, "");该接口是自己开发,大量数据已整理。(jira自带的接口可用/rest/api/2/search?jql=project=prokey 取相应的值)

通过将json数据反序列化成对象,json中有数组为list,对象与json数据的字段相同。json如{"a":"1","b":"2","c":[{"d":"3"},{"e":"4","f":[{"g":"5"}]}]}

var jo = JsonConvert.DeserializeObject<T>(IssueJson);
 List<T> aa= new List<T>();

 for (int k = 0; k < jo.Issues.Count; k++)
 { 
 for (int i = 0; i < jo.Issues[k].Moduls.Count; i++)
 { 
 for (int j = 0; j < jo.Issues[k].Moduls[i].Functions.Count; j++)
 {
T ad = new T();
 ad.ChildSystem = jo.Issues[k].ChildSystem;
 ad.ModulName = jo.Issues[k].Moduls[i].ModulName;
 ad.FunctionName = jo.Issues[k].Moduls[i].Functions[j].FunctionName;
 ad.ARID = ARID;
 ad.IsDelete = 0;
aa.Add(ad);
 }
 }
 }
 

return aa;

public class T
{
 public List<T> Issue { get; set; }
 public string code { get; set; }
 public string message { get; set; }
}

另一种json格式:[{"d":"3"},{"e":"4","f":[{"g":"5"}]}]

var jo = JsonConvert.DeserializeObject<List<T>>(IssueJson);

ps:jira插件的研究

在jira中创建成功后,jira中的展示。

研究了下jira的插件structure,可以将需求以下拉的形式展示,下载插件版本,然后在jira的插件中add-to插件的jar包,之后添加license,否则无法出现插件。还有一个情况如果版本过高或过低会导致页面刷不出来,再去下载个版本一致的即可,就会出现此页面。

jira 调 java 接口 jira接口对接_jira 调 java 接口

可进行自动也可以手动添加。手动添加使用add-》search&add拖动即可。

自动则点automation,添加规则。添加JQL Query,规则自定义 project=xxx  and issuetype=epic等。也可以进行extend扩展,使story在epic下。

jira 调 java 接口 jira接口对接_jira_02

一个小错误:在开发完成后部署到测试环境,发现永远调不通,咋回事,报500错,原来是环境没部署全。全量发布一版正常了。


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空