Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用域、用户名和pw连接到远程URL_Java_Http_Authentication_Base64_Authorization - Fatal编程技术网

Java 使用域、用户名和pw连接到远程URL

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

嘿,伙计们,这里有个问题: 我有一个用户名,看起来像ABCD\michael,还有一个密码,看起来像password!6789ABCD在本例中是域

使用下面的代码,我得到401未经授权的响应代码。 我怀疑,在base64编码之前,双反斜杠没有转换为单反斜杠。还是我用错了域名

我需要帮助才能让它工作。我们将不胜感激

提前谢谢你

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.查看这个链接,我想它包含了你的答案:在我问这个问题之前,我尝试了这个链接包含的所有方法。不过,谢谢你!