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