Jira Service Desk API调用从c#web应用程序返回401

时间:2018-01-09 03:41:44

标签: c# jira-rest-api

今天上午确实有效,现在它返回401错误(System.Net.HttpStatusCode.Unauthorized)。

另外,我不能再使用Postman进行测试,同样的事情是Unauthorized(401)。

但是,如果我登录Jira然后打开一个新选项卡,我可以粘贴api调用和poof,即时json响应。所以看来证书是正确的。

        var uriString = "https://journal.atlassian.net/rest/servicedeskapi/request?start=" + start.ToString() + "&limit=" + limit.ToString();
        var uri = new Uri(uriString);

        //var username = "my.email@someplace.com";
        //var password = "mypassword";

        var username = util.GetJiraAPIusername();
        var password = util.GetJiraAPIpassword();

        ViewBag.URI = uri;
        var client = new HttpClient();
        client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(Encoding.UTF8.GetBytes($"{username}:{password}")));
        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

        HttpResponseMessage response = client.GetAsync(uri).Result;  // Blocking call!
        if (response.IsSuccessStatusCode){ 

2 个答案:

答案 0 :(得分:0)

您是否尝试过检查请求标头?我正在使用Fiddler Web Debugger(你可以使用你想要的任何工具)来拦截和记录所有HTTP请求。你应该在你正在制作的请求标题上看到类似的内容:

enter image description here

答案 1 :(得分:0)

更新:事实证明是由于Atlassian方面的变化。一旦Jira管理员对我的帐户进行了必要的更改,我就可以登录并再次使用Postman。

https://confluence.atlassian.com/cloudkb/jira-service-desk-cloud-rest-api-changes-to-atlassian-account-940700797.html

  

2018年1月1日,我们正在更改使用Jira Service Desk Cloud REST API对用户进行身份验证的方式。

     

目前,REST API支持所有用户的身份验证。但是,1月1日,用户需要有一个Atlassian帐户才能对REST API进行身份验证。

     

如果您的实例上的用户针对REST API进行身份验证但没有Atlassian帐户,则您需要将其转换为Atlassian帐户。方法如下:

     
      
  1. 转到网站管理>用户管理> Jira服务台>   Portal仅限客户。
  2.   
  3. 选择要转换的用户,然后单击“转换为Atlassian帐户”。
  4.   
  5. 转到id.atlassian.com并使用用户的电子邮件地址登录。
  6.   
  7. 转到安全> API令牌。
  8.   
  9. 单击“创建API令牌”。
  10.   
  11. 复制令牌并使用它作为基本身份验证的密码。用户名是用户的电子邮件地址。
  12.