微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

搜索 Sonarcloud API 的问题即使存在也不会返回

如何解决搜索 Sonarcloud API 的问题即使存在也不会返回

我正在尝试从私有 Sonarcloud 项目的一个分支中获取所有声纳报告问题。 我使用以下 REST 调用执行此操作:

https://<loginHash>@sonarcloud.io/api/issues/search?projects=<projectKey>&branch=<branchName>

如果我在网络浏览器中正常输入此电话或使用邮递员电话,我会收到以下回复

{
   "total": 1,"p": 1,"ps": 100,"paging": {
       "pageIndex": 1,"pageSize": 100,"total": 1
   },"effortTotal": 5,"debtTotal": 5,"issues": [
       {
          ...
       }
   ],...
}

所以我得到了关于 1 sonar 问题的完整报告,就像它显示在 Sonarcloud 页面中一样。 现在,当我想在 Java 中执行此操作时,报告突然没有问题。我使用 CloseableHttpClient:

进行 REST 调用
CloseableHttpClient client = HttpClients.createDefault();
HttpGet httpGet = new HttpGet("https://<loginHash>@sonarcloud.io/api/issues/search?projects=<projectKey>&branch=<branchName>");

CloseableHttpResponse response = client.execute(httpGet);
String body = EntityUtils.toString(response.getEntity(),"UTF-8");

System.out.println(body);

印刷体是这样的:

{
   "total":0,"p":1,"ps":100,"paging":{
      "pageIndex":1,"pageSize":100,"total":0
   },"effortTotal":0,"debtTotal":0,"issues":[],"components":[],"organizations":[],"facets":[]
}

如您所见,问题现在是空的。该报告也已经存在,因此声纳报告尚未准备好这不是问题。有什么帮助吗?

解决方法

原来是授权问题。似乎 CloseableHttpClient 无法识别网络调用中的给定 loginHash。 您必须像这样手动添加授权:

CloseableHttpClient client = HttpClients.createDefault();
HttpGet httpGet = new HttpGet("https://sonarcloud.io/api/issues/search?projects=<projectKey>&branch=<branchName>"); 
httpGet.setHeader(HttpHeaders.AUTHORIZATION,"<Login:Password>");

CloseableHttpResponse response = client.execute(httpGet);
String body = EntityUtils.toString(response.getEntity(),"UTF-8");

如您所见,不再需要 URI 中的 loginHash

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。