【问题标题】:Basic authendication for Rest API using RestTemplate使用 RestTemplate 对 Rest API 进行基本身份验证
【发布时间】:2014-01-15 07:28:56
【问题描述】:

我在 java 中使用 spring mvc(基于注释)。我需要在我的应用程序中做休息 API。我对 API 和 REST 都很陌生。我的 Rest 应用程序中需要做的所有基本配置是什么?我打算使用“RestTemplate” 如何使用 RestTemplate 进行基本身份验证(在 URL 标头中传递用户名和密码)?请任何人帮助我。

提前致谢。

【问题讨论】:

    标签: java api spring-mvc resttemplate


    【解决方案1】:

    您必须添加身份验证标头(例如,Base64 来自org.apache.commons.codec.binary.Base64):

    String plainCreds = "yourUsername@yourPassword";
    byte[] plainCredsBytes = plainCreds.getBytes();
    byte[] base64CredsBytes = Base64.encodeBase64(plainCredsBytes);
    String base64Creds = new String(base64CredsBytes);
    HttpHeaders headers = new HttpHeaders();
    headers.add("Authorization", "Basic " + base64Creds);
    

    然后将其添加到请求中:

    HttpEntity<String> request = new HttpEntity<String>(headers);
    ResponseEntity<YourResponseType> response = restTemplate.exchange(url, HttpMethod.GET, request, YourResponseType.class);
    YourResponseType account = response.getBody();
    

    对于 POST 请求,您可以将 HttpEntity 传递给标准 postForObject() 方法

    【讨论】:

      【解决方案2】:

      你必须用“:”代替“@”

      String plainCreds = "yourUsername:yourPassword";
      byte[] plainCredsBytes = plainCreds.getBytes();
      byte[] base64CredsBytes = Base64.encodeBase64(plainCredsBytes);
      String base64Creds = new String(base64CredsBytes);
      HttpHeaders headers = new HttpHeaders();
      headers.add("Authorization", "Basic " + base64Creds);
      
      HttpEntity<String> httpEntity = new HttpEntity<String>(headers);
      ResponseEntity<YourResponseType> response = restTemplate.exchange(url, HttpMethod.GET, httpEntity, YourResponseType.class);
      YourResponseType account = response.getBody();
      

      【讨论】:

        猜你喜欢
        • 2014-03-22
        • 1970-01-01
        • 2016-08-24
        • 2013-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多