Jira REST API returns 创建问题时出错

Jira REST API returns error when creating issue

我的目标是使用 Jira REST API 创建问题。但截至目前,我收到错误 (405) Method Not Allowed.

如果 Jira Remote API 已打开,我已在 Jira Properties 中检查过。 在下:

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;
    }

我目前不知道是什么导致了这个错误。我刚从远程服务器收到 (405) Method Not Allowed 错误,而我实际上希望收到 API 响应。

WebRequest 中缺少授权 Header。 Jira 需要这样一个 header 来确认只有授权用户才能访问 API 的。

此授权字符串构建如下:

"Basic username:api_token"

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

这是我会做的:

  1. 使用您的 Atlassian 帐户为 Jira 生成一个 API 令牌:https://id.atlassian.com/manage/api-tokens
  2. 构建 username:api_token.
  3. 形式的字符串
  4. Base64-encode 对字符串进行编码。
  5. 提供授权 header,其内容为 Basic,后跟编码字符串。

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

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