Во-первых, я новичок в Android и предполагаю, что делаю что-то не так.
Я пытаюсь использовать дайджест-проверку подлинности для сервера Apache tomcat.
Я использую библиотеку okhttp3и может совершать звонки в службу с использованием обычной аутентификации, но я не вижу, как реализовать дайджест-аутентификацию.У меня это работает в Java с использованием библиотек org.apache.http.client.HttpClient.
Разница между этими двумя заключается в том, как установлены учетные данные:
credentialProvider.setCredentials(
new AuthScope(targetHost.getHostName(), targetHost.getPort(), "UserDatabase"),
new UsernamePasswordCredentials(mUsername, mPassword)
);
в отличие отмоя реализация, которая в основном скопирована из okhttp3 wiki :
OkHttpClient client = new OkHttpClient.Builder()
.authenticator(new Authenticator() {
@Override public Request authenticate(Route route, Response response) throws IOException {
if (response.request().header("Authorization") != null) {
return null; // Give up, we've already attempted to authenticate.
}
String credential = Credentials.basic("superuser", "superuser");
return response.request().newBuilder()
.header("Authorization", credential)
.build();
})
.build();
Где AuthScope указывает контейнеру сервлета искать в области UserDatabase учетные данные для имени пользователя / пароля.
Я пытаюсь следовать: Второй ответ на этот вопрос и кажется, что большинство библиотек было изменено, или я делаю что-то еще неправильно.
Чтобы попасть в библиотеки HttpClient вэту ссылку я добавил
implementation group: 'org.apache.httpcomponents' , name: 'httpclient-android' , version: '4.3.5.1'
к зависимостям для приложения.
Есть ли лучший способ сделать это?