Java Spring如何在请求中添加用户名密码以通过接口安全认证
你服务端配置的是HTTP Basic认证模式,不需要将用户名和密码放在请求体中,需要在请求头中添加Authorization字段携带凭证。
你用的OkHttp客户端可以直接用自带的工具类快速生成认证头,修改你的post方法即可,修改后的代码如下:
public String post(final String url, String json) throws IOException { RequestBody body = RequestBody.create(JSON, json); // 生成HTTP Basic认证头,用户名Admin,密码123 String credential = Credentials.basic("Admin", "123"); Request request = new Request.Builder() .url(url) .addHeader("Authorization", credential) // 把认证头添加到请求中 .post(body) .build(); try(Response response= client.newCall(request).execute()){ return response.body().string(); } }
注意事项
- HTTP Basic的本质是将「用户名:密码」的字符串做Base64编码后添加到请求头,本身没有加密能力,生产环境必须搭配HTTPS使用,防止凭证被窃取。
- 如果后续有多个请求都需要携带认证信息,可以给OkHttpClient配置全局拦截器统一添加认证头,不需要每个请求单独配置。
内容的提问来源于stack exchange,提问作者Dunmol
相关产品推荐
相关产品推荐

