对接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);