我想使用SOAP API获取特定JIRA问题的所有自定义字段的值。我有一个名为'阶段'的自定义字段,其值为决策待决,用于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);
如果有人能提供正确的方法,我将非常感激。
答案 0 :(得分:2)
5.1.3不推荐使用SOAP API。我建议你使用REST API - 它更易于使用和实现。
什么是REST?: read here。基本思想是将HTTP请求类型绑定到操作,这很明显 - 请检查this table以便快速查看。
Jira有一个强大的REST API,您可以使用它。这是当前版本的the main documentation。
在某些高级步骤中您需要做什么?:
使用您的JIRA实例设置某种类型的身份验证。是的:
通过API获取所有字段的列表:
/rest/api/2/field' [method returns a list of all fields][6] - both System and Custom.
Then when you identify the exact field use
/ rest / api / 2 / customFieldOption / {id}`获取自定义字段选项的the full
representation。
我建议您使用Chrome REST Console之类的工具,或者您可以轻松提出请求的类似工具,以了解API。奖励是如果您通过同一浏览器登录,则无需设置验证。您的用户需要完全管理员权限。
这是root of all JIRA REST API文档。看看这个。
如果您在PHP中这样做,我个人建议使用某种类型的库。我用过 Guzzle(在CakePHP环境中)完成了这个确切的任务,结果非常好。
答案 1 :(得分: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轻松完成。