51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 2245|回复: 0
打印 上一主题 下一主题

jira调用api实例

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2018-4-9 16:33:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
服务器安装目录为:XX/atlassian/jira/atlassian-jira/WEB-INF/web.xml

问题:

/api/2/issuesecurityschemes,对于issuesecurityschemes这个只有jira 7版本以上才有,注意



如果添加项目:对应的

Create project   POST /rest/api/2/project  

其中:


  1. {
  2.     "key": "EX",
  3.     "name": "Example",
  4.     "projectTypeKey": "business",
  5.     "projectTemplateKey": "com.atlassian.jira-core-project-templates:jira-core-project-management",
  6.     "description": "Example Project description",
  7.     "lead": "Charlie",
  8.     "url": "http://atlassian.com",
  9.     "assigneeType": "PROJECT_LEAD",
  10.     "avatarId": 10200,
  11.     "issueSecurityScheme": 10001,
  12.     "permissionScheme": 10011,
  13.     "notificationScheme": 10021,
  14.     "categoryId": 10120
  15. }
  16. 如果为:

  17. "projectTypeKey": "Software",

  18. 则:projectTemplateKey可以为:

  19.     com.pyxis.greenhopper.jira:gh-scrum-template
  20.     com.pyxis.greenhopper.jira:gh-kanban-template
  21.     com.pyxis.greenhopper.jira:basic-software-development-template



  22. 如果"projectTypeKey": "business",

  23. 则:projectTemplateKey可以为:

  24.    com.atlassian.jira-core-project-templates:jira-core-project-management
  25.     com.atlassian.jira-core-project-templates:jira-core-task-management
  26.     com.atlassian.jira-core-project-templates:jira-core-process-management
  27. 选定不同的模板。



  28. (一) jira rest api直接调用

  29. 如果jira整合了cas,则需要用配置规则,让 url不被cas截获,输入如下:

  30. <filter>
  31.      <filter-name>CAS Filter</filter-name>
  32.      <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
  33.      <init-param>
  34.          <param-name>casServerLoginUrl</param-name>
  35.          <param-value>http://ip/cas/login</param-value>
  36.      </init-param>
  37.      <init-param>
  38.          <param-name>serverName</param-name>
  39.          <param-value>http://ip</param-value>
  40.      </init-param>

  41.     <!--忽略cas对api接口调用 start -->
  42.    
  43.      <init-param>
  44.          <param-name>ignorePattern</param-name>
  45.          <param-value>^http:\/\/ip\/issues\/rest\/api\/.*</param-value>
  46.      </init-param>
  47.     <!--忽略cas对api接口调用  end -->
  48.     </filter>



  49. <filter-mapping>
  50.         <filter-name>CAS Filter</filter-name>
  51.         <url-pattern>/*</url-pattern>
  52.     </filter-mapping>



  53. 同时如果出现问题:

  54. java.lang.NoSuchMethodError: com.atlassian.jira.user.preferences.UserPreferencesManager.clearCacheByKey(Ljava/lang/String;)V
  55. java.lang.NoSuchMethodError: com.atlassian.jira.user.preferences.UserPreferencesManager.clearCacheByKey(Ljava/lang/String;)V
  56. at com.atlassian.jira.user.preferences.UserPreferencesResetInterceptor.afterLogin(UserPreferencesResetInterceptor.java:24)
  57. at com.atlassian.seraph.filter.PasswordBasedLoginFilter.runAfterLoginInterceptors(PasswordBasedLoginFilter.java:163)
  58. at com.atlassian.seraph.filter.PasswordBasedLoginFilter.login(PasswordBasedLoginFilter.java:91)
  59. at com.atlassian.seraph.filter.BaseLoginFilter.doFilter(BaseLoginFilter.java:134)
  60. at com.atlassian.jira.web.filters.JiraLoginFilter.doFilter(JiraLoginFilter.java:70)
  61. 则需要修改/install/atlassian/jira/atlassian-jira/WEB-INF/classes下的seraph-config.xml文件中,最后的 ***************************************慎重

  62. <interceptors>
  63.         <interceptor class="com.atlassian.jira.user.preferences.UserPreferencesResetInterceptor"/>
  64.     </interceptors>

  65. 修改为:

  66.     <interceptors>
  67.         <interceptor class="com.atlassian.jira.web.filters.JiraLoginInterceptor" />
  68.     </interceptors>



  69. httpclient为:

  70. String auth = jiraUserName + ":" + jiraPassword;
  71.             byte[] encodedAuth = Base64.encodeBase64(
  72.               auth.getBytes(Charset.forName("UTF-8")));
  73.             String authHeader = "Basic " + new String(encodedAuth);
  74.             
  75.             if(method.equals("get")){//get方法
  76.                 //HttpGet httpGet = new HttpGet(url);
  77.                 HttpGet httpGet = new HttpGet(url);
  78.                 httpGet.setHeader(HttpHeaders.AUTHORIZATION, authHeader);
  79.                 response = httpclient.execute(httpGet);
  80.             }

  81. }



  82. if (response.getStatusLine().getStatusCode() == status) {
  83.                 result = IOUtils.toString(response.getEntity().getContent());
  84.             } else {
  85.                 System.out.println("请求未成功,返回代码:" + response.getStatusLine().getStatusCode() + ";   错误信息:"
  86.                         + response.getStatusLine().getReasonPhrase());
  87.             }            
  88.             httpclient.close();
  89.             return result; //返回

  90. (二)jira客户端程序调取api



  91. 注:只需添加对应的jar,对于还需要其他的依赖,jar会自动去仓库寻找



  92. 项目需要依赖jar:项目中,只需添加如下:


  93.      <dependencies>
  94.         <dependency>
  95.             <groupId>com.atlassian.jira</groupId>
  96.             <artifactId>jira-rest-java-client</artifactId>
  97.             <!-- <version>2.0.0-m2</version> -->
  98.             <version>1.2-m01</version>
  99.         </dependency>
  100.     </dependencies>



  101. jar需要依赖的仓库如下:

  102. ...
  103.        <repositories>
  104.          <repository>
  105.            <id>atlassian-public</id>
  106.            <url>https://m2proxy.atlassian.com/repository/public</url>
  107.            <snapshots>
  108.              <enabled>true</enabled>
  109.              <updatePolicy>daily</updatePolicy>
  110.              <checksumPolicy>warn</checksumPolicy>
  111.            </snapshots>
  112.            <releases>
  113.              <enabled>true</enabled>
  114.              <checksumPolicy>warn</checksumPolicy>
  115.            </releases>
  116.          </repository>
  117.        </repositories>
  118. ...
  119.        <pluginRepositories>
  120.          <pluginRepository>
  121.            <id>atlassian-public</id>
  122.            <url>https://m2proxy.atlassian.com/repository/public</url>
  123.            <releases>
  124.              <enabled>true</enabled>
  125.              <checksumPolicy>warn</checksumPolicy>
  126.            </releases>
  127.            <snapshots>
  128.              <checksumPolicy>warn</checksumPolicy>
  129.            </snapshots>
  130.          </pluginRepository>
  131.        </pluginRepositories>
  132. ...













  133. 注:如果出现

  134. JerseyJiraRestClientFactory doesn't exist

  135. 则是jira-rest-java-client采用的版本太高,降低版本即可。
  136. 如低版本的

  137.    <dependencies>
  138.         <dependency>
  139.             <groupId>com.atlassian.jira</groupId>
  140.             <artifactId>jira-rest-java-client</artifactId>
  141.             <!-- <version>2.0.0-m2</version> -->
  142.             <version>1.2-m01</version>
  143.         </dependency>
  144.     </dependencies>



  145. 完整如下:pom.xml

  146. <?xml version="1.0"?>

  147. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  148.     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  149.     <modelVersion>4.0.0</modelVersion>
  150.     <groupId>cn.cmri.test</groupId>
  151.     <artifactId>test</artifactId>
  152.     <packaging>jar</packaging>
  153.     <name>test Portlet</name>
  154.     <version>1</version>


  155.      <dependencies>
  156.         <dependency>
  157.             <groupId>com.atlassian.jira</groupId>
  158.             <artifactId>jira-rest-java-client</artifactId>
  159.             <!-- <version>2.0.0-m2</version> -->
  160.             <version>1.2-m01</version>
  161.         </dependency>
  162.     </dependencies>
  163.     <!--  
  164. <repositories>
  165. <repository>
  166.       <id>atlassian-public</id>
  167.       <url>https://maven.atlassian.com/repository/public</url>
  168.       <snapshots>
  169.         <enabled>true</enabled>
  170.         <updatePolicy>never</updatePolicy>
  171.         <checksumPolicy>warn</checksumPolicy>
  172.       </snapshots>
  173.        <releases>
  174.          <enabled>true</enabled>
  175.          <checksumPolicy>warn</checksumPolicy>
  176.       </releases>
  177. </repository>
  178. </repositories>
  179.     -->

  180.       <repositories>
  181.          <repository>
  182.            <id>atlassian-public</id>
  183.            <url>https://m2proxy.atlassian.com/repository/public</url>
  184.            <snapshots>
  185.              <enabled>true</enabled>
  186.              <updatePolicy>daily</updatePolicy>
  187.              <checksumPolicy>warn</checksumPolicy>
  188.            </snapshots>
  189.            <releases>
  190.              <enabled>true</enabled>
  191.              <checksumPolicy>warn</checksumPolicy>
  192.            </releases>
  193.          </repository>
  194.        </repositories>
  195.          <pluginRepositories>
  196.          <pluginRepository>
  197.            <id>atlassian-public</id>
  198.            <url>https://m2proxy.atlassian.com/repository/public</url>
  199.            <releases>
  200.              <enabled>true</enabled>
  201.              <checksumPolicy>warn</checksumPolicy>
  202.            </releases>
  203.            <snapshots>
  204.              <checksumPolicy>warn</checksumPolicy>
  205.            </snapshots>
  206.          </pluginRepository>
  207.        </pluginRepositories>
  208.    
  209. </project>

复制代码

问题说明:

如果出现用户其他信息的问题,例如添加Basic Authentication认证,如果出现各种错误,可能原因是你的用户
名和密码不正确,

此系统中,通过liferay单点进入jira,jira通过cas认证,其中,对于Jira中如果在Liferay中认证如果通过,则直
接进入Jira,导致直接通过Basic Authentication认证时,其用户名和密码有可能与Jira系统中不一致,故需要真
正的Jira账号和你们去测试,对于Jira api的调用,官网上有明确的文档,查看即可。



对于cas的拦截,如

输入http://ip/issues/ ,跳转到登录界面,则说明cas进行了拦截,否则,没有进行拦截。

即直接在浏览器上输入ip,如果跳转则说明cas进行了拦截,否则,没有进行拦截。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-4-26 11:17 , Processed in 0.063051 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表