1

我想使用 SOAP API 获取特定 JIRA 问题的所有自定义字段的值。我有一个名为'Phase'的自定义字段,其值为Decision Pending,用于 JIRA 问题JIRA-123

我正在使用JIRA 5.1.3.

我可以使用 SOAP API 获取 JIRA 问题的所有属性,但上述问题的自定义字段的值除外。

我尝试了以下代码,但我无法在我的代码中使用ComponentManager

IssueManager issueManager = ComponentManager.getInstance().getIssueManager();
CustomFieldManager customFieldManager = ComponentManager.getInstance().getCustomFieldManager();
Issue issue = issueManager.getIssueObject("JIRA-123");
CustomField customField = customFieldManager.getCustomFieldObjectByName("Phase");
Object customFieldValue = issue.getCustomFieldValue(customField);

如果有人能提供正确的方法,我将不胜感激。

4

2 回答 2

2

SOAP API 已被 5.1.3 弃用。我建议您使用 REST API - 它更易于使用和实施。

什么是 REST?: 阅读此处。基本思想是将 HTTP 请求类型绑定到操作,这很明显 - 检查此表以快速运行。

Jira 有一个强大的 REST API 供您使用。这是当前版本的主要文档

在一些高级步骤中你需要做什么?:

  1. 使用您的 JIRA 实例设置某种类型的身份验证。就这样吧:

  2. 通过 API 获取所有字段的列表:

    / /rest/api/2/field' [method returns a list of all fields][6] - both System and Custom. Then when you identify the exact field userest/api/2/customFieldOption/{id}` 获取自定义字段选项的完整
    表示

我建议您使用Chrome REST Console之类的工具或任何可以轻松发出请求的类似工具来了解 API。好处是,如果您通过同一浏览器登录,则无需设置身份验证。不过,您的用户将需要完全的管理员访问权限。

这是所有 JIRA REST API文档的根源。一探究竟。

如果您在 PHP 中执行此操作,我个人建议您使用某种库。我已经使用 Guzzle(在 CakePHP 环境中)来完成这个确切的任务,结果非常好。

于 2012-10-09T09:41:31.817 回答
1

我不确定你如何使用soap API,这里是通过PHP-SOAP使用它的例子:

#!/usr/bin/php -q
<?php
   $soapClient = new SoapClient("https://jira.com/rpc/soap/jirasoapservice-v2?wsdl");
   $token = $soapClient->login('user', 'password');
   $myIssue = $soapClient->getIssue($token,"TES-13");
   print_r($myIssue); // all of the issue details
   print_r($myIssue->customFieldValues); // get all custom fields
   foreach ($myIssue->customFieldValues as $customFieldValue) {
        // search for the right custom field
        if ($customFieldValue->customfieldId == 'customfield_10402') {
                echo $customFieldValue->values[0];
                die();
        }
   }
?>

如果您想使用任何其他 API,请查看JIRA Remote API Reference

关于 REST 和 SOAP API 的评论 - 引用 Jira 网站的 SOAP API“支持但没有未来开发”。Rest API 仍然有点新,有些事情你还不能用 REST API ( example ) 做,但可以使用 SOAP API 轻松完成。

于 2012-10-07T10:24:49.820 回答