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) {
...
}
NTLM チャレンジは HttpUrlConnection でサポートされていないだけだと本当に思い始めています。機能しているように見えるライブラリをいくつか見ましたが、外部ライブラリは使用したくありません。
外部ライブラリなしで HttpUrlConnection に NTLM チャレンジを処理させることが可能かどうかを誰かが確認できますか?