对接basic认证,之前是做过的,再次遇到居然直观的认为大概是header里面加键值对就行,真是日了了,不知道自己学了个什么。

basic认证

实际肯定不是header里面添加键值对,而是:
1、帐号密码用:连接
2、将上述字符串用base64加密
3、header里面添加Authorization,值为Basic+空格+base64值

代码:

HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
//            headers.add("username",config.getUsername());
//            headers.add("password",config.getPassword());

//            basic认证要这么实现,直接放到header里面是错的

if(!StringUtils.isEmpty(config.getUsername())
        &&!StringUtils.isEmpty(config.getPassword())){
    String plainCredentials = config.getUsername()+":"+config.getPassword();
    String base64Credentials = new String(Base64.encodeBase64(plainCredentials.getBytes()));
    headers.add("Authorization", "Basic " + base64Credentials);
}

HttpEntity<String> restRequest = new HttpEntity<String>(JSON.toJSONString(request), headers);

log.info("请求参数_headers={}",JSON.toJSONString(headers));
log.info("请求参数_restRequest={}",JSON.toJSONString(restRequest));


// 先用string接吧 反正也不需要后续处理
String response = restTemplate.postForObject(config.getUrl(), restRequest, String.class);
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.