C#JIRA工作日志更新错误"远程服务器返回错误:(401)未经授权."

 阿都欧巴 发布于 2023-01-30 14:15

我将通过c#应用程序上的JIRA REST API更新JIRA中的问题的工作日志.以下代码显示了我到目前为止所做的工作.

HttpWebResponse返回此错误"远程服务器返回错误:(401)未经授权." .

我尝试使用相同的凭据并在PHP cURL函数中使用相同的数据,它工作正常,并成功更新工作日志.

这是我的Jason转换序列化对象:{"update":{"worklog":[{"add":{"comment":"IJ的示例测试评论","timeSpent":"210"}}}}}

protected string RunQuery(JiraResource resource, string argument = null, string data = null, string method = "PUT")
{
// Where;
// resource = issue
// argument = "JIRA-16"
// Data = {"update":{"worklog":[{"add":{"comment":"Sample test comment by IJ","timeSpent":"210"}}]}}
// Method = "PUT"

        string url = string.Format("{0}{1}/", m_BaseUrl, resource.ToString());

        if (argument != null)
        {
            url = string.Format("{0}{1}", url, argument);
        }

// URL = https://companyname.atlassian.net/rest/api/2/issue/JIRA-16

        HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
        request.ContentType = "application/json";
        request.Method = method;
        request.ContentLength = data.Length;

        using (StreamWriter writer = new StreamWriter(request.GetRequestStream()))
        {
            writer.Write(data);
        }

        string base64Credentials = GetEncodedCredentials(); // check below
        request.Headers.Add("Authorization", "Basic " + base64Credentials);

        HttpWebResponse response = request.GetResponse() as HttpWebResponse;// here returns the error
//The remote server returned an error: (401) Unauthorized.

        string result = string.Empty;
        using (StreamReader reader = new StreamReader(response.GetResponseStream()))
        {
            result = reader.ReadToEnd();
        }

        return result;
}

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

我哪里做错了?请帮我.

1 个回答
  • 可能的原因:您发送请求流添加授权标头.

       var request = WebRequest.Create(url) as HttpWebRequest;
       request.ContentType = "application/json";
       request.Method = method;
       request.ContentLength = data.Length;
    
       // All headers MUST be added before writing to request stream
       request.Headers.Add("Authorization", "Basic " + GetEncodedCredentials());
    
       using (StreamWriter writer = new StreamWriter(request.GetRequestStream()))
       {
           writer.Write(data);
       }
    

    2023-01-30 14:17 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有