Как реализовать дайджест-аутентификацию с помощью залпа в андроиде

Я использовал REST API для воспламенения кода на стороне сервера. Я установил дайджест-аутентификацию для REST API. Я использовал библиотеку volley для выполнения http-запроса на стороне клиента (android) и использования jsonObjectRequest для вызова URL-адреса. Поэтому, если кто-нибудь знает, как поместить заголовки для дайджест-аутентификации в запрос залпа, пожалуйста, помогите мне в этом.


person Shashikant    schedule 18.03.2016    source источник
comment
Пожалуйста, проверьте stackoverflow. ком/вопросы/17049473/   -  person trebron    schedule 18.03.2016
comment
@trebron Спасибо ... но решения, представленные в данной ссылке, мне не помогают ... Хотите ли вы какие-либо другие подробности о проблеме, с которой я столкнулся? ... чтобы вы могли помочь мне в ее решении ...   -  person Shashikant    schedule 19.03.2016
comment
Если вы хотите отправлять пользовательские заголовки, вам нужно переопределить getHeaders() в вашем JsonObjectRequest. Пожалуйста, предоставьте исходный код, чтобы я мог сделать дополнительные разъяснения.   -  person trebron    schedule 19.03.2016


Ответы (2)


Я никогда не проверял эту реализацию HttpDigestStack, но, вероятно, начну с чего-то вроде этого:

final String userName = "user";
final String password = "password";

// Instantiate the cache
Cache cache = new DiskBasedCache(getCacheDir(), 1024 * 1024); // 1MB cap

DigestAuthenticator auth = new DigestAuthenticator() {
            @Override
            protected PasswordAuthentication requestPasswordAuthentication(String rHost, InetAddress rAddr, int rPort, String rProtocol, String realm, String scheme, URL rURL, Authenticator.RequestorType reqType) {
                return new PasswordAuthentication(userName, password.toCharArray());
            }
        };

HurlStack.UrlRewriter urlRewriter = new HurlStack.UrlRewriter() {

  String rewriteUrl(String url) {
    return url;
  }
};

HttpDigestStack digestStack = new HttpDigestStack(auth, urlRewriter);

// Set up the network to use HttpURLConnection as the HTTP client.
Network network = new BasicNetwork(digestStack);

// Instantiate the RequestQueue with the cache and network.
RequestQueue mRequestQueue = new RequestQueue(cache, network);
person trebron    schedule 19.03.2016

person    schedule
comment
@trebron..это мой код..URL это greentin.com/apiuser/ getuserdet/format/json..i забыл удалить admin:1234 из URL... - person Shashikant; 19.03.2016
comment
И какой VolleyError вы получаете? - person trebron; 19.03.2016
comment
Если я удалю дайджест-аутентификацию с сервера, сервер даст правильный ответ - person Shashikant; 19.03.2016
comment
Пользователь в кодировке Base64: пароль выглядит как обычная аутентификация, а не дайджест. Для реализации полной дайджест-аутентификации вы должны посмотреть что-то вроде java2s.com /Open-Source/Android_Free_Code/Framework/platform/ Если вам достаточно базовой аутентификации, просто измените Digest на Basic в заголовке и убедитесь, что ваш сервер правильно обрабатывает базовую аутентификацию. - person trebron; 19.03.2016
comment
@trebron, так что .. есть ли другой способ аутентификации DIGEST? - person Shashikant; 19.03.2016
comment
Я отредактировал свой комментарий - посмотрите на реализацию HttpDigestStack, а также на последний ответ в заголовке stackoverflow.com/questions/34305060/ для использования. - person trebron; 19.03.2016
comment
Знаете ли вы, как использовать этот класс HttpDigestStack... вчера я пытался использовать его... но потерпел неудачу... - person Shashikant; 19.03.2016