将Java rest API连接到JIra

时间:2016-07-28 14:42:09

标签: java jira jira-rest-api jira-rest-java-api

我想将Java与JIRA试用帐户连接起来。我测试了这段代码:

public class JiraImpl
{
    private static URI JIRA_URL = URI.create("https://sonoratest.atlassian.net");
    private static final String JIRA_ADMIN_USERNAME = "sonoratestw@gmail.com";
    private static final String JIRA_ADMIN_PASSWORD = "sonpass";

    public static void main(String[] args) throws IOException, InterruptedException, ExecutionException
    {
        try
        {
            AsynchronousJiraRestClientFactory factory = new AsynchronousJiraRestClientFactory();
            JiraRestClient restClient = factory.createWithBasicHttpAuthentication(JIRA_URL, JIRA_ADMIN_USERNAME, JIRA_ADMIN_PASSWORD);

            Iterable<BasicProject> allProjects = restClient.getProjectClient().getAllProjects().claim();
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
}

但是当我跑的时候没有任何反应。 Wahat是使用REST API从JIRA获取数据的正确方法吗?

更新。我也试过了:

private static URI JIRA_URL = URI.create("https://sonoratest.atlassian.net/rest/auth/1/session");

我得到了

java.util.concurrent.ExecutionException: RestClientException{statusCode=Optional.of(404), errorCollections=[ErrorCollection{status=404, errors={}, errorMessages=[]}]}
    at com.google.common.util.concurrent.AbstractFuture$Sync.getValue(AbstractFuture.java:299)
    at com.google.common.util.concurrent.AbstractFuture$Sync.get(AbstractFuture.java:286)
    at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:116)
    at com.google.common.util.concurrent.ForwardingFuture.get(ForwardingFuture.java:63)
    at com.atlassian.jira.rest.client.internal.async.DelegatingPromise.get(DelegatingPromise.java:102)
    at com.jira.impl.JiraImpl.main(JiraImpl.java:23)
Caused by: RestClientException{statusCode=Optional.of(404), errorCollections=[ErrorCollection{status=404, errors={}, errorMessages=[]}]}

1 个答案:

答案 0 :(得分:3)

首先尝试获取问题,因为这是非常基本的。

import java.net.URI;
import java.util.Optional;

import com.atlassian.jira.rest.client.api.JiraRestClient;
import com.atlassian.jira.rest.client.api.domain.Issue;
import com.atlassian.jira.rest.client.internal.async.AsynchronousJiraRestClientFactory;
import com.atlassian.util.concurrent.Promise;

public class JRC
{
    public Issue getIssue(String issueKey) throws Exception
    {
        final URI jiraServerUri = new URI("https://jira-domain");
        final JiraRestClient restClient = new AsynchronousJiraRestClientFactory().createWithBasicHttpAuthentication(jiraServerUri, "user@domain.com", "password");
        Promise issuePromise = restClient.getIssueClient().getIssue(issueKey);
        return Optional.ofNullable((Issue) issuePromise.claim()).orElseThrow(() -> new Exception("No such issue"));
    }

}

您还可以查看此代码以获得完整的示例:

https://github.com/somaiah/jrjc