我得到了错误:Exception: org.springframework.web.client.HttpClientErrorException$Unauthorized: 401
,当我试图通过HttpHeader连接到Jira时,凭证是在一个configserver文件中配置的,如下所示:
@Component
public class JiraHttpHeadersHelper {
@Value("${first.jira.auth.user}")
private String firstJiraAuthUser;
@Value("${first.jira.auth.psw}")
private String firstJiraAuthPsw;
public HttpHeaders jiraHeadersWithAuthentication() {
String plainCreds = firstJiraAuthUser + ":" + firstJiraAuthPsw;
System.out.println("Credenciales JiraServices: "+plainCreds);
byte[] base64CredsBytes = Base64.getEncoder().encode(plainCreds.getBytes());
String base64Creds = new String(base64CredsBytes);
HttpHeaders headers = new HttpHeaders();
headers.add("Authorization", "Basic" + base64Creds);
headers.setContentType(MediaType.APPLICATION_JSON);
System.out.println("Authorization JiraServices: "+headers);
return headers;
}
}
命令调用上面的文件以及在行ResponseEntity<String> result = restTemplate.exchange(url, HttpMethod.GET,this.requestEnt, String.class);
上获得错误的方法是:
public ResponseEntity<String> getPriorityJira() {
//Request entity created
this.requestEnt = new HttpEntity(this.jiraHttpHeadersHelper.jiraHeadersWithAuthentication());
String jql = "priority";
String url = jiraBaseURL + jql;
try {
ResponseEntity<String> result = restTemplate.exchange(url, HttpMethod.GET,this.requestEnt, String.class);
System.out.println("HttpStatus"+HttpStatus.OK);
if (result.getStatusCode() == HttpStatus.OK) {
return result;
} else {
logger.error("Jira Generic User maybe blocked, status from API: " +result.getStatusCode() + ". Body: "+ result.getBody());
return new ResponseEntity<>(result.getBody(), result.getStatusCode());
}
} catch(HttpClientErrorException e) {
logger.error("Error getting priorityJira. Exception: "+ e);
return new ResponseEntity<>(e.getStatusCode());
}
}
实际上,当我运行调试并检查凭据时,它会毫无问题地启动它们。我已经搜索过了,尝试过这个页面上的大部分链接,但是我找不到解决方案。在这种情况下,如能提供任何帮助,我们将不胜感激。
发布于 2022-06-02 23:20:15
当您定义您的授权头时,您可以在不添加空白的情况下,将您的密钥连接到concat。
headers.add("Authorization", "Basic" + base64Creds);
而不是:
headers.add("Authorization", "Basic " + base64Creds);
也许只是因为这个。
编辑:答案是将StandardCharsets.UTF-8
添加到字符串构造函数中。
https://stackoverflow.com/questions/72484525
复制相似问题