使用 Authenticator.setDefault 时,修改账号密码无效的替换方案。

之前做过一个webservie项目,需要请求 带有用户名密码校验 的https  接口。

刚开始用的就是Authenticator.setDefault 来处理用户名密码校验,但是后台客户提出一个需求,用户名与密码需要可以改变。

天真的写好代码就给客户演示了。。。然后就被这玩意坑了。。。

找了不少资料,最后结果是说 这东西是jdk  2007的bug。。。。无解,只能找其他东西替换他了。

直接上代码吧~~~


urlCon = (HttpsURLConnection) (new URL(httpsUrl)).openConnection(); 
       
        //urlCon.addRequestProperty("PasswordAuthentication", "xxxxx:xxxxx");
        //String users = DemoService.username+":"+DemoService.password;
        //校验密码
        String username = DemoService.username;
String password = DemoService.password;
String input = username + ":" + password;
//String encoding = new sun.misc.BASE64Encoder().encode(input.getBytes());

String encoding = Base64.encodeBase64String(input.getBytes());
urlCon.setRequestProperty("Authorization", "Basic " + encoding);

将Authenticator.setDefault 替换成上方的方式即可,用户名密码  修改 立刻生效。


这个故事告诉我们 ,再简单的代码 也需要好好测试啊

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值