场景: 由于多次调用对方接口失败,对方修改了请求规则,采取Basic Auth进行请求,提供对应的用户名、密码,对接过程中需要请求对方接口,需要添加该Basic Auth.
在PostMan中调用,该参数写的很方便,在代码逻辑中实现,该参数需要安置在Header头中,具体使用如下:
Basic Auth作为请求头是以 Base64对用户名密码加密 规则: secret = 用户名:密码
对该secret进行加密 ,加密后 Http请求头样式为 Basic secret内容(注意Basic和secret中间有空格) 代码如下:
String username = "test";
String password = "123456789";
String userMsg = username + ":" + password;
String base64UserMsg = Base64.getEncoder().encodeToString(userMsg.getBytes());
String authorization = "Basic "+base64UserMsg;
System.out.println(authorization);
将这个authorization放入一个Map作为请求头
Map<String, String> msgHeaderParams = new HashMap<>();
msgHeaderParams.put("Authorization", authorization);
使用HttpUtil创建post请求,加入该请求头,进行请求
String result = HttpUtil.createPost(url).body(testbody)
.headerMap(msgHeaderParams,false).execute().body();
JSONObject jsonResult = JSONUtil.parseObj(result);
这样就完成一次携带Basic Auth的POST请求了。