在密码中转义@字符

时间:2013-10-30 12:33:33

标签: java url escaping

我正在尝试使用java的URL对象进行经过身份验证的请求。问题是我的密码中有@符号(现在更改它不是一个选项),所以当java尝试url.getUserInfo()时,它会停在密码中的@处,搞砸了我的要求。我尝试使用%40转义它但是从我在调试模式中看到的它只看到%40而不是@字符。

示例:http://user:p@ss@stackoverflow.com将userinfo视为user:p

2 个答案:

答案 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