Создать проблему с Jira - PullRequest
       25

Создать проблему с Jira

2 голосов
/ 11 декабря 2019

Я создаю приложение, в котором пользователи могут оставлять сообщения и многое другое. Я могу опубликовать проблему через Postman, используя базовую аутентификацию и опубликовав это сырое приложение / json. В настоящее время я учусь на 3-м курсе обучения программисту, поэтому я такой нуб ....

ОБНОВЛЕНИЕ ОБНОВЛЕНИЕ Я исправил это :). Это был файл данных. Это должно работать, если вы используете его. Я также добавил метод GetEncodedCredentiels, чтобы вы также могли его использовать. Спасибо всем за помощь !!

ОБНОВЛЕНИЕ Я добился прогресса, с помощью этого метода я получаю через базовую аутентификацию недопустимую ошибку. Но ... У меня все еще есть ошибка 400 Bad запроса. Код теперь:

public async Task<string> PostIssueAsync(string username, string password)
    {
                    string data = @"{
                ""fields"": {
                   ""project"":
                   {
                        ""key"": ""TEST""
                   },
                   ""summary"": ""test"",
                   ""description"": ""Creating an issue while setting custom field values via projhect"",
                   ""issuetype"": {
                        ""name"": ""Fault""
                   }
                        }
                    }";

        HttpClient client = new HttpClient();

        client.BaseAddress = new System.Uri(Constants.JiraUrl + "rest/api/latest/issue");
        var cred = GetEncodedCredentials(username, password);

        client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", cred);

        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

        var content = new StringContent(data, Encoding.UTF8, "application/json");
        content.Headers.ContentType = new MediaTypeHeaderValue("application/json");

        var response = client.PostAsync(client.BaseAddress, content).Result;

        if (response.IsSuccessStatusCode)
        {
        }
        else
        {
            var test = response.Content.ReadAsStringAsync().Result;
        }
        return "";
    }

Метод GetEncodedCredentiels:

        private static string GetEncodedCredentials(string userid, string password)
    {
        string mergedCredentials = string.Format("{0}:{1}", userid, password);
        byte[] byteCredentials = UTF8Encoding.UTF8.GetBytes(mergedCredentials);
        return Convert.ToBase64String(byteCredentials);
    }

Ответы [ 2 ]

0 голосов
/ 12 декабря 2019

Я решил проблему. См. Выше для всего кода!

0 голосов
/ 11 декабря 2019

Я думаю, что вам может понадобиться часть "Encoding.ASCII" вместо "Encoding.UTF8".

Также может помочь преобразование ее в массив байтов.

Этот код работает для меня.

    System.Net.WebClient cli = new System.Net.WebClient();
    string authInfo = My.Settings.username + ":" + My.Settings.password;
    cli.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(Encoding.ASCII.GetBytes(authInfo)));
    cli.Headers.Add("Content-Type", "application/json");

    var bytes = Encoding.Default.GetBytes(jsonstringpayload);
    webClient.UploadDataAsync("http://support.example.com:8080/rest/" + url, "POST", bytes);
...