我想访问Web服务API以检查项目的某些信息,尤其是代码覆盖率。我尝试使用的请求网址是:
https://<host>/api/coverage/show?key=<project-key>
问题是我只会收到以下回复:
{
errors: [
{
msg: "Insufficient privileges"
}
]
}
我是通过cookie中的有效会话登录的,我拥有所有必要的权限(即浏览权限)。那么为什么我不能获得数据?
答案 0 :(得分:0)
根据文档here,此API要求用户进行“浏览”。对项目的许可。您需要使用Basic Auth将凭据传递给服务器,它应该可以工作。
您需要在请求的HTTP标头中传递Authorization: Basic <base64encoded-username-password>
。您可以找到许多工具来生成代码,我使用fiddler。在提琴手中,转到工具 - &gt;文字向导。在对话框中输入username:password
(例如admin:admin
)并选择“ToBase64&#39;”。将此代码复制到HTTP标头中,然后尝试再次发送请求。
答案 1 :(得分:0)
我遇到了同样的问题(SonarQube 4.5),结果证明问题出在项目名称中,即键参数的第一部分的值(在冒号之前) )。
使用的名称不是它在仪表板中显示的名称。
要找出值的真实姓名:
将鼠标悬停在左上角项目的标题上。出现的链接应该是这样的:
使用&#34;项目名称&#34;即使它已经有冒号了。
http://server/api/coverage/show?key=server-name:path-to-file
其中&#34;路径到文件&#34;类似于src / main / java / myFile.java
最后不要忘记身份验证部分。 使用curl:
curl -u user:password http://server/api/coverage/show?key=server-name:path-to-file
SonarQube返回的错误信息肯定是误导性的。