我正在尝试使用 HttpUrlConnection 类将我的 Android 应用程序连接到 IIS 服务器。
我的服务器需要用户进行身份验证,因此它向客户端发送以下质询:
WWW-Authenticate: Negotiate
WWW-Authenticate: NTLM
我的问题是 HttpUrlConnection 似乎没有解析它。所以 getPasswordAuthentication() 永远不会被调用,它会返回一个 IOException “找不到身份验证挑战”。
这是我的代码:
Authenticator.setDefault(new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("myUsername", "myPassword".toCharArray());
}
});
URL url = new URL(myUrl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Accept-Encoding", "gzip");
conn.setRequestProperty("Accept-Charset", "UTF-8");
conn.setRequestProperty("Accept", "*/*");
conn.setRequestProperty("Connection", "close");
conn.setDoOutput(true);
conn.setDoInput(true);
try
{
conn.connect();
status_code = conn.getResponseCode();
}catch (IOException e) {
...
}
我真的开始认为 HttpUrlConnection 不支持 NTLM 挑战。我看到一些似乎可以完成工作的库,但我不想使用外部库。
有人可以确认是否可以让 HttpUrlConnection 在没有外部库的情况下处理 NTLM 挑战?