首页 > 解决方案 > SonarQube 搜索 API 不会进行身份验证

问题描述

我正在编写一个简短的程序来从 SonarQube 上的项目中收集指标。

我正在使用 SonarQube 的两个 api:api/components/search 和 api/measures/component。

我正在使用令牌进行身份验证,并且使用常规 curl 命令对两者都没有问题。

在我的 Java 程序中,组件 api 验证良好并返回结果。但是,搜索 api(使用完全相同的方法进行身份验证时)只会返回:

{"errors":[{"msg":"Authentication is required"}]}

关于为什么这两个 api 在 Java 程序中调用时表现出不同行为的任何想法?

执行的 curl 命令(适用于两者):

curl -u TOKEN: https://sonarqube-XXX.co.uk/api/components/search?qualifiers=DIR&q=master

curl -u TOKEN: https://sonarqube-XXX.co.uk/api/measures/component?componentId=XXX&metricKeys=coverage

使用搜索 api 进行身份验证和 HTTP 请求的 Java 代码(适用于组件 api):

CredentialsProvider provider = new BasicCredentialsProvider();
UsernamePasswordCredentials credentials = new UsernamePasswordCredentials(TOKEN, "");
provider.setCredentials(AuthScope.ANY, credentials);
HttpClient httpClient = HttpClientBuilder.create()
        .setDefaultCredentialsProvider(provider)
        .build();

HttpGet httpGet = new HttpGet("https://sonarqube-XXX.co.uk/api/components/search?qualifiers=DIR&q=master");
HttpResponse response = httpClient.execute(httpGet);
String componentInfo = EntityUtils.toString(response.getEntity());

标签: javasonarqubehttpclient

解决方案


推荐阅读