首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与Jira制造问题

与Jira制造问题
EN

Stack Overflow用户
提问于 2019-12-11 14:18:13
回答 2查看 198关注 0票数 1

我正在制作一个应用程序,用户可以在其中发布问题等等。我可以通过邮递员使用basic auth发布这个原始应用程序/json。

更新我已经取得了进展,用这种方法我得到的基本方法是无效的错误。但是..。我仍然有一个400坏的请求错误。现在的守则是:

代码语言:javascript
复制
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 "";
    }

错误:在use语句中我使用ReadAsStringAsync查看错误。错误是:“{”errorMessages“:[”意外字符(‘(代码39)):期望双引号开始字段名\n在源:errorMessages行: 2,列:7“}”

我觉得数据文件出了问题。等我走得更远我会更新的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-12-12 15:13:14

我修好了:)。是数据文件。如果你用的话,这个应该能用。我还添加了GetEncodedCredentiels方法,这样您也可以使用它。谢谢大家的帮助!!

更新我已经取得了进展,用这种方法我得到的基本方法是无效的错误。但是..。我仍然有一个400坏的请求错误。现在的守则是:

代码语言:javascript
复制
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方法:

代码语言:javascript
复制
        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);
    }
票数 0
EN

Stack Overflow用户

发布于 2019-12-11 14:25:02

我认为您可能需要"Encoding.ASCII“部分而不是"Encoding.UTF8”部分。

此外,将其转换为Byte可能会有所帮助。

这个密码适用于我。

代码语言:javascript
复制
    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);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59287818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档