创建问题时,Jira REST API返回错误

时间:2019-01-10 15:48:10

标签: c# api jira-rest-api

我的目标是使用Jira REST API来创建问题。但是到目前为止,我遇到了错误(405)不允许的方法。

我已经检查了Jira属性是否已打开Jira远程API。 下:

JIRA配置>常规配置>允许远程API调用已启用。

我还检查了提交的JSON字符串,对我来说不错:

"{\"fields\":{\"project\":{\"key\":\"CTTS\"},\"summary\":\"Api  Test\",\"description\":\"Test\",\"issuetype\":{\"name\":\"Story\"}}}"

我当前调用该API的代码如下:

public JiraApiResponseObject CreateRequest(JSONstring)
    {
        jiraRequest = (HttpWebRequest)WebRequest.Create("https://MyJiraUrl.net/rest/api/2/issue");

        jiraRequest.Method = "POST";
        jiraRequest.ContentType = "application/json";
        jiraRequest.Accept = "application/json";

        using (var streamWriter = new StreamWriter(jiraRequest.GetRequestStream()))
        {
            streamWriter.Write(JSONstring);
            streamWriter.Flush();
        }

        HttpWebResponse response = (HttpWebResponse)jiraRequest.GetResponse();
        return jiraReturnObject;
    }

我目前不知道是什么原因导致了错误。当我实际上希望获得API响应时,我只是从远程服务器收到(405)不允许的方法错误。

1 个答案:

答案 0 :(得分:1)

WebRequest中缺少授权标头。 Jira需要这样的标头,以确认只有授权用户才能访问API。

此授权字符串的构建如下:

"Basic username:api_token"

api_token可以在Jira Cloud中生成,并且需要进行base64编码。

这就是我要做的:

  1. 使用您的Atlassian帐户https://id.atlassian.com/manage/api-tokens为Jira生成API令牌。
  2. 构建用户名:api_token形式的字符串。
  3. Base64编码对字符串进行编码。
  4. 为Authorization标头提供内容Basic和其后的编码字符串。

例如,字符串fred:fred在base64中编码为ZnJlZDpmcmVk,因此您可以在请求中添加以下内容:

jiraRequest.Headers["Authorization"] = "Basic " + "UserName" + Base64Encode(apiToken);