首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Java异常:未经授权: 401

Java异常:未经授权: 401
EN

Stack Overflow用户
提问于 2022-06-02 19:53:41
回答 1查看 268关注 0票数 0

我得到了错误:Exception: org.springframework.web.client.HttpClientErrorException$Unauthorized: 401,当我试图通过HttpHeader连接到Jira时,凭证是在一个configserver文件中配置的,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@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);上获得错误的方法是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    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());
        }
    }

实际上,当我运行调试并检查凭据时,它会毫无问题地启动它们。我已经搜索过了,尝试过这个页面上的大部分链接,但是我找不到解决方案。在这种情况下,如能提供任何帮助,我们将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-02 23:20:15

当您定义您的授权头时,您可以在不添加空白的情况下,将您的密钥连接到concat。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
headers.add("Authorization", "Basic" + base64Creds);

而不是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
headers.add("Authorization", "Basic " + base64Creds);

也许只是因为这个。

编辑:答案是将StandardCharsets.UTF-8添加到字符串构造函数中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72484525

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文