我正在尝试使用java的URL对象进行经过身份验证的请求。问题是我的密码中有@
符号(现在更改它不是一个选项),所以当java尝试url.getUserInfo()
时,它会停在密码中的@
处,搞砸了我的要求。我尝试使用%40
转义它但是从我在调试模式中看到的它只看到%40
而不是@
字符。
示例:http://user:p@ss@stackoverflow.com
将userinfo视为user:p
答案 0 :(得分:1)
您可以注册一个能够在需要时提供凭据的Authenticator,而不是将用户名和密码放在网址中。
Authenticator.setDefault(new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
if("stackoverflow.com".equals(getRequestingHost()) {
return new PasswordAuthentication("user", "p@ss".toCharArray());
} else {
return null;
}
}
});
答案 1 :(得分:0)
?os_username=user&os_password=p@ss
这是我发现的替代方案,因此您的请求将通过身份验证,如下所示:
http://stackoverflow.com/stuff?os_username=user&os_password=p@ss