我无法从Java调用SonarQube API来搜索问题get410错误



嗨,我正在编写一个开源Springboot微服务,以从SonarQube获得问题我使用SonarQube安装在Docker容器中登录后,我从浏览器成功调用:http://localhost:9001/api/issues/search?componentKeys=za.co.nico:RabbitMqPoc

我正在单元测试一个Java类,我可以调用相同的URL,并获得401身份验证失败,我需要它来工作

package za.co.nico.poc.services;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.sonarqube.ws.client.GetRequest;
import org.sonarqube.ws.client.HttpConnector;
import org.sonarqube.ws.client.WsClient;
import org.sonarqube.ws.client.WsClientFactories;
import org.sonarqube.ws.client.WsResponse;
import org.springframework.stereotype.Service;
/**
* 
* https://www.baeldung.com/java-http-request
* 
*/
@Service
public class SonarServiceImpl implements SonarService {
private static final Logger log = LoggerFactory.getLogger(SonarServiceImpl.class);

private final String TOKEN="2ce06b3585c34141beeeb4005235337ba2bd135d"; 

/**
* https://programtalk.com/java-api-usage-examples/org.sonarqube.ws.client.WsClient/
*/
@Override
public String getData(String restUrl,String sonarEndPoint) {
log.debug(" restUrl : "+restUrl+" sonarEndPoint : "+sonarEndPoint); // restUrl : http://localhost:9001/ sonarEndPoint : api/components/search_projects
String login="admin";
String password="admin";

WsClient wsClient = WsClientFactories.getDefault().newClient(HttpConnector.newBuilder().url(restUrl).credentials(login, password).build());
WsResponse response = wsClient.wsConnector().call(new GetRequest("api/authentication/validate"));
String content = response.content();
log.debug(""+response.isSuccessful());
log.debug(""+response.code()); //200
response = wsClient.wsConnector().call(new GetRequest("api/components/search_projects"));
log.debug(""+response.isSuccessful());
content = response.content();
log.debug(""+response.code()); //401


wsClient = WsClientFactories.getDefault().newClient(HttpConnector.newBuilder().url(restUrl).credentials("admin", "admin").build());
response = wsClient.wsConnector().call(new GetRequest("local_ws_call/require_permission"));
log.debug(""+response.isSuccessful());
log.debug(""+response.code()); // 200
wsClient = WsClientFactories.getDefault().newClient(HttpConnector.newBuilder().url(restUrl).credentials(login, password).build());
response = wsClient.wsConnector().call(new GetRequest("api/rules/search"));
log.debug(""+response.isSuccessful());
log.debug(""+response.code()); // 401

return "";
}
}

请告知如何修复此

401错误只是意味着您提供的身份验证凭据与预期不匹配。看来您提供的用户名和密码是";管理员";以及";admin";,但我也看到你定义了一个";TOKEN";常数,它是未引用的。我们不知道您是如何配置sonarqube实例的,也不知道实际需要什么凭据。根据我的经验,自动化脚本最好使用";令牌";身份验证系统,您似乎一直打算使用它,但您只是没有正确地传递它。

最新更新