- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一个 Web 应用程序,可以显示 Sonarqube 的代码气味结果,但我也希望它有时可以创建自定义规则。目前,我可以使用Java中的HTTPClient或Js中的XMLHttpRequest从服务器获取数据。但是,我真的被困在向服务器发送消息上。
在Js中,我尝试使用以下代码登录:(CORS已在我的chrome中禁用)
request.open("POST", "http://localhost:9000/api/authentication/login?login=admin&password=admin", true);
request.send();
响应状态码为200
,表示成功。但是,当我尝试执行某些需要许可的操作时
request.open("POST", "http://localhost:9000/api/qualityprofiles/copy?fromKey=" + fromKey + "&toName=" + name, true);
request.send();
结果是401
,未经授权。
经过一番研究,我将代码更改为
var base64encodedData = ("admin:admin").toString('base64');
request.open("POST", "http://localhost:9000/api/qualityprofiles/copy?fromKey=" + fromKey + "&toName=" + name, true);
request.setRequestHeader("Authorization", "Basic " + base64encodedData);
request.send();
响应为405
,未找到方法。
经过进一步研究,有人提到 request.withCredentials
应该设置为 true
。我添加进去后,又出现了CORS问题。 (禁用 CORS)
(我对 Sonarqube API 有点困惑。我这么说的原因是,在我看来,这个 API 的目的是简化外部使用 Sonarqube 服务器的方法。但是,因为它确实不允许 CORS,这是否意味着我不能在自己的网页上使用该 API?)
由于Js没有运气,所以我转而使用Java。
在 Java 中,我运行了这个:(我也完成了登录)
HttpPost post = new HttpPost("http://localhost:9000/api/qualityprofiles/copy?fromKey=AV7dToVK_BWPTtE1c9vU&toName=testtt");
try(CloseableHttpClient httpClient = HttpClients.createDefault();
CloseableHttpResponse response = httpClient.execute(post);) {
System.out.println(response.getStatusLine());
}
我得到了:
HTTP/1.1 401
然后我更改我的代码,请点击此链接关于 Basic Authentication with the API
CredentialsProvider provider = new BasicCredentialsProvider();
UsernamePasswordCredentials credentials
= new UsernamePasswordCredentials("admin", "admin");
provider.setCredentials(AuthScope.ANY, credentials);
HttpClient client = HttpClientBuilder.create()
.setDefaultCredentialsProvider(provider)
.build();
HttpResponse response = client.execute(
new HttpPost("http://localhost:9000/api/qualityprofiles/copy?fromKey=AV7dToVK_BWPTtE1c9vU&toName=testtt"));
int statusCode = response.getStatusLine().getStatusCode();
System.out.println(statusCode);
再次,401
总而言之,我的问题是:如何使用Java代码或Js代码(首选)将消息POST到授权的SonarQube服务器?
感谢任何帮助!
更新
我现在正在尝试使用curl,这是我在终端中运行的内容
curl -X POST -u deb3dd4152c571bcdb7b965e1d99b23a4e5c9505: http://localhost:9000/api/qualityprofiles/copy?fromKey=AV7dToVK_BWPTtE1c9vU&toName=test_file
我收到了这个回复,但我不知道这是怎么回事
{"errors":[{"msg":"The 'toName' parameter is missing"}]}
CURL 的第二次更新
我跑了:
curl -X POST -F "fromKey=AV7dToVK_BWPTtE1c9vU;toName=test_file" -v -u deb3dd4152c571bcdb7b965e1d99b23a4e5c9505: http://localhost:9000/api/qualityprofiles/copy
结果:
* Trying ::1...
* Connected to localhost (::1) port 9000 (#0)
* Server auth using Basic with user 'deb3dd4152c571bcdb7b965e1d99b23a4e5c9505'
> POST /api/qualityprofiles/copy HTTP/1.1
> Host: localhost:9000
> Authorization: Basic ZGViM2RkNDE1MmM1NzFiY2RiN2I5NjVlMWQ5OWIyM2E0ZTVjOTUwNTo=
> User-Agent: curl/7.49.1
> Accept: */*
> Content-Length: 179
> Expect: 100-continue
> Content-Type: multipart/form-data; boundary=------------------------c22bb5dd76f44ac4
>
< HTTP/1.1 100
< HTTP/1.1 400
< Content-Type: application/json
< Content-Length: 56
< Date: Wed, 04 Oct 2017 00:43:47 GMT
< Connection: close
<
* Closing connection 0
{"errors":[{"msg":"The 'toName' parameter is missing"}]}
最佳答案
对于遇到同样问题的人。我已经在 Java 代码上运行了,这是我的代码
HttpPost post = new HttpPost("http://localhost:9000/api/qualityprofiles/copy?fromKey=AV7dToVK_BWPTtE1c9vU&toName=testtt");
post.setHeader("Authorization", "Basic ZGViM2RkNDE1MmM1NzFiY2RiN2I5NjVlMWQ5OWIyM2E0ZTVjOTUwNTo=");
try(CloseableHttpClient httpClient = HttpClients.createDefault();
CloseableHttpResponse response = httpClient.execute(post);) {
System.out.println(response.getStatusLine());
}
您可能会注意到我添加了一行设置标题。我之前已经做过类似的事情,将我的登录名和密码编码为这种 base64 格式,但它们都无法正常工作。该工作编码字符串取自 CURL 方法。 (来 self 的第二次更新)
我尝试过一些在线base64编码和解码工具,但结果与我从CURL方法得到的结果不匹配,所以如果你在这方面遇到困难,请运行CURL来获取编码后的 header 并将其传入!如果有人能解释一个更好的版本,那就太好了!
此外,我仍然对 Js 版本的运行感兴趣。如果您知道答案,请分享!
关于java - SonarQube 如何使用 Web API 登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46538316/
我找到了 Using SonarQube in Eclipse 并将提出一个针对 Python 的单独问题。但在这里我想更一般地询问如何在提交之前处理单个源文件时,如何使用 SonarQube 作为
我们之前在现已关闭的 SonarQube Users mailing list 上讨论过这个问题. 通过优化Postgre DB换了半周左右问题解决,然后又出现问题。 我们正在使用 Jenkins 1
自从更新到5.x以来,由于“权限不足”问题,我们的许多构建作业现在都失败了。如here中所述,应该在SonarQube 5.1中解决该问题,但实际上它没有得到解决,或者存在另一个与我们当前运行Sona
我已经有一段时间没有看过 SonarQube 了。最新版本看起来很有趣。 上次我查看这个产品时,他们有一个网站,他们通过 SonarQube 进程推送了各种流行的开源库(如 Tomcat、Active
在 SonarQube (5.6.4 LTS) 中有一个后台(项目分析)任务可视化的 View :(管理/项目/后台任务)。似乎任务是按顺序运行的(一次一个)。有些任务可能需要 40 分钟,这意味着其
今天我正在用 mysqldump 备份 MySQL,但我不确定是否需要从/opt/sonar 保存一些文件。请你能帮我一些指示吗? 除了 MySQL,我还需要在 Sonar 中备份什么? 最佳答案 我
我们希望每个用户都能收到一封关于他们在此分析中引入的新问题的电子邮件。 我在这里找到了这个请求,说它应该已经成为可能: http://jira.sonarsource.com/browse/SONAR
是否可以从一个项目导出代码覆盖率和 sonarqube 问题的排除项并导入到其他项目? 最佳答案 排除项是项目属性,因此您可以使用 /api/properties Web 服务自动从一个项目获取这些属
当 Sonar 抛出一个特定的编码规则违规时,开发人员(或就此而言任何授权用户)如何忽略它?假设弹出一条规则“不遵循文件命名约定”,有没有办法可以将其声明为误报并单击某个按钮以确保不会显示该编码规则违
我希望更改规则“左花括号应位于代码行的末尾”,因为我们使用了不同的约定。 提前致谢! 最佳答案 由于 Sonarqube 打算在规则上提供尽可能少的配置:您应该使用 key squid:LeftCur
我正在寻找一种在 SonarQube 中组织项目的方法,并发现我必须为此付费:http://www.sonarqube.org/bring-a-new-dimension-to-sonar-with-
SonarQube Server 5.1.2, Sonar-Runner 2.4 正如 Multi-moduleProject 中提供的那样我创建了一个项目结构 Accounts | ->invoic
在 SonarQube 的 Web UI 中,您可以根据多个条件过滤问题。但似乎没有一个是可以否定的。 我喜欢找出所有关键问题,即 不是 规则xyz。我目前从 Web UI 中只能看到选择我喜欢看的东
我已经设置了一个 jenkins-sonarqube-github 集成工作流程,其中 git 存储库中的拉取请求会触发一个 webhook,该 webhook 会启动一个 jenkins 作业,该作
有没有人设法让 SonarQube 与 Upsource 合作?我已经为 SonarQube 下载了 upsource-sonar-plugin-0.1-SNAPSHOT.jar 插件,并在我通过/s
我正在使用JaCoCo进行代码覆盖。单元测试报告是使用junit创建的,并且已正确导入,因此可以正确显示单元测试信息。 问题是,我收到错误消息: 没有有关每次测试的覆盖率的信息。 ,代码覆盖率显示单元
我有一个 Sonarcloud 帐户,我正在尝试使用 SonarQube.Scanner.MSBuild.exe 分析 Visual Studio 解决方案。我创建了一个 token 并将其作为 So
似乎有最新版本的新规则可用。 我有几个问题报告为“应正确使用 Printf 样式的格式字符串 (squid:S3457)” 我不明白 my case 中的描述和错误是什么: LOGGER.info("
这个问题我看了很多帖子,但是没找到答案所以才问。我将 Sonarqube 从 4.5 升级到 5.6,它工作正常,但质量配置文件是空的。我尝试使用备份/恢复选项恢复一个,但规则被忽略: image .
我实现了 SonarQube在服务器上,我做了大部分配置 远程 .因此,无论何时安装插件,都会重新启动 SonarQube是必需的,每次我都必须显式(手动)重启 SonarQube服务器 . 有没有办
我是一名优秀的程序员,十分优秀!