java - 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());
解决方案
推荐阅读
- docker - 替代运行多个命令来配置应用程序
- css - 输入字段后的 MaterializeCSS 图标
- symfony - symfony - 浏览器关闭时确认
- c++ - 在没有密钥的情况下读取密文的剩余噪声预算
- haskell - 类型级递归和 PolyKinds
- bash - Unix 变量看起来像一个字符串,但不是
- php - 需要一个正则表达式在“点”之前和之后添加一个空格,但十进制数字没有
- json - 想要将数据作为 json 对象嵌入到 .net 核心中并从角度访问它
- angular - 我正在使用角度和量角器 e2e 测试。如何减少每次测试开始的时间?
- python-2.7 - PlatformIO 与 Atom 上的 Python 2 冲突