Jira REST API возвращает ошибку при создании проблемы - PullRequest
0 голосов
/ 10 января 2019

Моя цель - использовать Jira REST API для создания проблемы. Но на данный момент я получаю ошибку (405) Метод не разрешен.

Я проверил в свойствах Jira, включены ли API-интерфейсы Jira Remote. Под:

Конфигурация 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.

1 Ответ

0 голосов
/ 11 января 2019

В веб-запросе отсутствует заголовок авторизации. Jira нужен такой заголовок, чтобы подтвердить, что только авторизованные пользователи могут получить доступ к API.

Эта строка авторизации построена следующим образом:

"Basic username:api_token"

api_token может быть сгенерирован в Jira Cloud и должен быть закодирован в base64.

Вот что я бы сделал:

  1. Создание токена API для Jira с использованием вашей учетной записи Atlassian: https://id.atlassian.com/manage/api-tokens.
  2. Создайте строку в форме имя пользователя: api_token.
  3. Кодирование Base64 кодирует строку.
  4. Укажите заголовок авторизации с содержанием Basic, за которым следует закодированная строка.

Например, строка fred: fred кодируется в ZnJlZDpmcmVk в base64, поэтому вы бы добавили следующее к вашему запросу:

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