как вопрос allready говорит, я пытаюсь выполнить проверку подлинности в android.
До сих пор я не использовал DefaultHttpClient
и это метод аутентификации (с использованием UsernamePasswordCredentials
и так далее), но это не рекомендуется, так как Android 5 и будет удален в Android 6.
Так я о том, чтобы перейти от DefaultHttpClient
к HttpUrlConnection
.
Сейчас я пытаюсь добиться дайджест-проверки подлинности, который должен работать довольно просто, как объяснено here:Дайджест-аутентификация в Android с использованием HttpURLConnection
Authenticator.setDefault(new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
Но getPasswordAuthentication
не получает не призывал к каким-то причинам.
Во время поиска этой проблемы я нашел разные сообщения, так как аутентификация дайджеста не поддерживается HttpUrlConnection
в android, но эти сообщения с 2010-2012 годов, поэтому я не уверен, что это все еще так. Также мы используем HttpUrlConnection
с аутентификацией дайджеста в нашем рабочем приложении Java, где он работает.
Я также нашел несколько сообщений, говорящих о OkHttp
. OkHttp
, похоже, используется Android под капотом (точнее, HttpUrlConnectionImpl
). Но это HttpUrlConnectionImpl
немного странно, оно даже не показано в иерархии типа Eclipse, и я не могу его отладить. Также он должен быть com.squareup.okhttp.internal.huc.HttpUrlConnectionImpl
, а в андроиде - com.android.okhttp.internal.http.HttpUrlConnectionImpl
.
Так что я просто не могу выполнить проверку подлинности с помощью этого HttpUrlConnection
в android.
Может ли кто-нибудь сказать мне, как это сделать без внешних библиотек?
EDIT:
сервер запрашивает аутентификацию дайджеста:
WWW-Authenticate: Digest realm="Realm Name",domain="/domain",nonce="nonce",algorithm=MD5,qop="auth"
Так Basic-аутентификация не должна»работать, так как сервер запрашивает дайджест.
Спасибо за этот ответ. Это только версия андроидов «HttpUrlConnection», которая не поддерживает дайджест или также «java.net.HttpURLConnection» по умолчанию? – Springrbua
@Springrbua Только на Android его не поддерживают, по крайней мере, насколько мне известно. Возможно, вы найдете источники для реализации JDK. – Nappy
Хорошо, спасибо за ваш ответ. На данный момент я буду придерживаться «DefaultHttpClient», но мне кажется, что мне нужно рано или поздно переключиться, поэтому мне придется самому реализовать дайджест. Благодаря! – Springrbua