首页 > 解决方案 > 使用 Jira 创建问题

问题描述

我正在制作一个应用程序,用户可以在其中发布问题等等。我可以使用基本身份验证通过 Postman 发布问题并发布此原始应用程序/json

更新 我已经取得了进展,使用这种方法我通过了基本的身份验证无效错误。但是...我仍然有 400 Bad request 错误。现在的代码是:

public async Task<string> PostIssueAsync(string username, string password)
    {
        string data = @"{
                'fields': {
                   'project':
                   {
                        'key': 'TEST'
                   },
                   'summary': 'zfasf',
                   '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 "";
    }

错误: 在 else 语句中,我使用 ReadAsStringAsync 来查看错误。错误是:"{"errorMessages":["Unexpected character (''' (code 39)): was expecting double-quote to start field name\n at [Source: org.apache.catalina.connector.CoyoteInputStream@ae77320 ; 行:2,列:7]"]}"

我认为它在数据文件中出错了。当我进一步时,我会更新。

标签: c#jsonrestjirajira-rest-api

解决方案


我认为您可能需要“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);

推荐阅读