Java 使用域、用户名和pw连接到远程URL
嘿,伙计们,这里有个问题: 我有一个用户名,看起来像ABCD\michael,还有一个密码,看起来像password!6789ABCD在本例中是域 使用下面的代码,我得到401未经授权的响应代码。 我怀疑,在base64编码之前,双反斜杠没有转换为单反斜杠。还是我用错了域名 我需要帮助才能让它工作。我们将不胜感激 提前谢谢你Java 使用域、用户名和pw连接到远程URL,java,http,authentication,base64,authorization,Java,Http,Authentication,Base64,Authorization,嘿,伙计们,这里有个问题: 我有一个用户名,看起来像ABCD\michael,还有一个密码,看起来像password!6789ABCD在本例中是域 使用下面的代码,我得到401未经授权的响应代码。 我怀疑,在base64编码之前,双反斜杠没有转换为单反斜杠。还是我用错了域名 我需要帮助才能让它工作。我们将不胜感激 提前谢谢你 public int getMeTheResponseCodeOfURL(final URL url) { HttpURLConnection httpUrlCon
public int getMeTheResponseCodeOfURL(final URL url) {
HttpURLConnection httpUrlConnection = null;
int statusCode = 0;
String userName = "ABCD\\michael";
String userPass = "password!6789";
String UserAndPass = userName + ":" + userPass;
String userPassBase64 = Base64.getEncoder().encodeToString(UserAndPass.getBytes());
try {
httpUrlConnection = (HttpURLConnection) url.openConnection();
httpUrlConnection.setRequestProperty("Authorization", "Basic " + userPassBase64);
httpUrlConnection.connect();
statusCode = httpUrlConnection.getResponseCode();
} catch (final IOException e) {
this.log.error("IO Exception! Errormessage: " + e);
}
return statusCode;
}
您能尝试用%5C替换\符号吗 这是斜杠的编码代码。 因此,您的用户名将如下所示:
String userName = "ABCD%5Cmichael"
另一种尝试是使用UserAndPass.getBytesUTF-8,尽管UserAndPass字符串只包含US-ASCII字符-因此这可能无关紧要-但请记住,string.getBytes[1]不带参数,使用默认的平台字符集对字符串字节进行编码,这可能并不总是您想要的。依赖默认字符集很少是个好主意 此外,如果ABCD是身份验证领域,那么它可能不需要是UserAndPass字符串的一部分-请参阅RFC 7617[2] [1]
[2] 您是否只尝试了没有域或名称的用户名user@domain?@Quetsalkotal我试过两种方法。可悲的是401.查看这个链接,我想它包含了你的答案:在我问这个问题之前,我尝试了这个链接包含的所有方法。不过,谢谢你!