Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.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 HttpsURLConnection验证两次?_Java_Http_Ssl - Fatal编程技术网

Java HttpsURLConnection验证两次?

Java HttpsURLConnection验证两次?,java,http,ssl,Java,Http,Ssl,我建立了一个安全的http连接,然后尝试从中获取InputStream。连接发生,我能够获取数据,但我实际上向服务器发送了两个授权请求??下面是我的代码,它正在获取连接并建立输入流: someConnection = (HttpsURLConnection) url.openConnection(); String userPass = username + ":" + password; String basicAuth = "Basic" + new String(new Base64().

我建立了一个安全的http连接,然后尝试从中获取
InputStream
。连接发生,我能够获取数据,但我实际上向服务器发送了两个授权请求??下面是我的代码,它正在获取连接并建立输入流:

someConnection = (HttpsURLConnection) url.openConnection();
String userPass = username + ":" + password;
String basicAuth = "Basic" + new String(new Base64().encode(userPass.getBytes()));
someConnection.setRequestProperty("Authorization", basicAuth);            
if (header != null) someConnection.setRequestProperty(header, headerValue);
InputStream is = someConnection.getInputStream();
在调用
.getInputStream()
方法之前,没有流量。然后我看到两个授权请求:


你知道它为什么这么做吗?由于某种原因,第一个请求似乎失败。

在“基本”和base64编码数据之间应该有空格


如果没有此项,则授权标头是错误的。我猜您在第一个请求中收到401,然后发送下一个请求,以及可能从不同来源(JAAS?)获得的其他凭据。

您的头
授权
的值与预期格式不匹配,它应该是
“Basic”
后跟
${username}:${password}
使用
rfc245-MIME
Base 64的变体编码(更多详细信息)


在这里,您忘记在
Basic
之后添加尾随空格,因此身份验证从未正确执行,从而导致此意外行为。

尝试在
Basic
之后添加空格,将
的“Basic”
替换为
的“Basic”
,添加空格确实解决了问题,但我想指出,如果没有空格,第二次验证总是正确的。