授权SonarQube api

问题描述 投票:0回答:1

我正在尝试使用 Api 通过 C# 应用程序获取某些指标的值。我的代码如下所示:

var httpWebRequest = (HttpWebRequest)WebRequest.Create("http://myServer/api/measures/component?componentKey=myProject&metricKeys=bugs,new_bugs");
httpWebRequest.Headers.Add("Authorization", token);
httpWebRequest.ContentType = "application/json";
httpWebRequest.Method = "GET";
try
{
    var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
    string result;
    using (var streamreader = new StreamReader(httpResponse.GetResponseStream()))
    {
        result = streamreader.ReadToEnd();
    }

    var joResponse = JObject.Parse(result);
    var measures = (JArray)joResponse["component"]["measures"];

}
catch (Exception e)
{
    Console.WriteLine(e);
    throw;
}

当我将相同的 API 写入浏览器的地址框中时,我得到了我想要的结果。标头的令牌是由我的服务器生成的。但由于某种原因,当我尝试在代码中获取此 httpwebrequest 的响应时,我捕获到错误 401。我做错了什么?

或者,我没有使用令牌,而是尝试使用凭据:

httpWebRequest.Credentials = new NetworkCredential(name, password);

结果是一样的。

编辑:

我尝试使用标题

httpWebRequest.Headers.Add("Authorization", "Bearer " + token);

相反。这也没有成功。

c# sonarqube
1个回答
1
投票

我上周遇到了这个问题,简直不敢相信我所经历的事情。 在“授权”标头中,您必须使用空密码对令牌进行编码,如下所示:

"Authorization", $"Basic {Convert.ToBase64String(Encoding.ASCII.GetBytes(apiKey + ":"))}"

“apiKey”后面的冒号非常重要。

© www.soinside.com 2019 - 2024. All rights reserved.