Я использовал REST API для воспламенения кода на стороне сервера. Я установил дайджест-аутентификацию для REST API. Я использовал библиотеку volley для выполнения http-запроса на стороне клиента (android) и использования jsonObjectRequest для вызова URL-адреса. Поэтому, если кто-нибудь знает, как поместить заголовки для дайджест-аутентификации в запрос залпа, пожалуйста, помогите мне в этом.
Как реализовать дайджест-аутентификацию с помощью залпа в андроиде
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
@trebron..это мой код..URL это greentin.com/apiuser/ getuserdet/format/json..i забыл удалить admin:1234 из URL...
- person Shashikant; 19.03.2016
И какой VolleyError вы получаете?
- person trebron; 19.03.2016
Если я удалю дайджест-аутентификацию с сервера, сервер даст правильный ответ
- person Shashikant; 19.03.2016
Пользователь в кодировке Base64: пароль выглядит как обычная аутентификация, а не дайджест. Для реализации полной дайджест-аутентификации вы должны посмотреть что-то вроде java2s.com /Open-Source/Android_Free_Code/Framework/platform/ Если вам достаточно базовой аутентификации, просто измените Digest на Basic в заголовке и убедитесь, что ваш сервер правильно обрабатывает базовую аутентификацию.
- person trebron; 19.03.2016
@trebron, так что .. есть ли другой способ аутентификации DIGEST?
- person Shashikant; 19.03.2016
Я отредактировал свой комментарий - посмотрите на реализацию HttpDigestStack, а также на последний ответ в заголовке stackoverflow.com/questions/34305060/ для использования.
- person trebron; 19.03.2016
Знаете ли вы, как использовать этот класс HttpDigestStack... вчера я пытался использовать его... но потерпел неудачу...
- person Shashikant; 19.03.2016