¿Cómo se utiliza la autenticación básica con Volley en Android?

Estoy buscando a través de ejemplos y código, pero no veo nada implementado. ¿Es esto posible en esta etapa?

3 Solutions collect form web for “¿Cómo se utiliza la autenticación básica con Volley en Android?”

Si es posible. Necesita reemplazar Request.getHeaders (). Soy perezoso y he utilizado HttpHeaders y HttpAuthentication de primavera para Android, pero sólo puede construir el encabezado de autenticación y devolverlo del método. Desde getHeaders () puede devolver el encabezado auth para la autenticación básica. Se trata de una solicitud de ejemplo con autenticación básica.

public class GetUser extends Request<User> { private static final String TAG = GetUser.class.getName(); private Response.Listener<User> mListener; private ObjectMapper mMapper = new ObjectMapper(); public GetUser(Response.ErrorListener errorListener, Response.Listener<User> listener){ super(Method.GET, PoisUtils.BASE_URL + "/users", errorListener); mListener = listener; } @Override protected Response<User> parseNetworkResponse(NetworkResponse response) { String jsonString = new String(response.data); try { User result = mMapper.readValue(jsonString, User.class); return Response.success(result, getCacheEntry()); } catch (IOException e) { Log.d(TAG, e.getMessage()); } return null; } @Override protected void deliverResponse(User response) { mListener.onResponse(response); } @Override public Map<String, String> getHeaders() throws AuthFailureError { return AuthUtils.buildAuthHeaders().toSingleValueMap(); } } 

Y aquí es cómo construir los encabezados de autenticación

 public static HttpHeaders buildAuthHeaders(){ if(UserUtils.isUserLogged()){ HttpHeaders requestHeaders = new HttpHeaders(); User user = PoisApplication.get().getUser(); HttpAuthentication auth = new HttpBasicAuthentication( user.getUsername(), user.getPassword()); requestHeaders.setAuthorization(auth); return requestHeaders; } return null; } 

Para aquellos que no quieren usar Spring para Android sólo por eso, aquí es cómo hacerlo.

 @Override public Map<String, String> getHeaders() throws AuthFailureError { HashMap<String, String> params = new HashMap<String, String>(); String creds = String.format("%s:%s","USERNAME","PASSWORD"); String auth = "Basic " + Base64.encodeToString(creds.getBytes(), Base64.DEFAULT); params.put("Authorization", auth); return params; } 

Tenga en cuenta que puede tener que utilizar Base64.NO_WRAP lugar de Base64.DEFAULT para que esto funcione. Como se señaló en los comentarios.

API 8+

Para una autorización de proxy (como squid) utilice este encabezado:

 String credentials = proxyUsername + ":" + proxyPassword; String auth = "Basic " + Base64.encodeToString(credentials.getBytes(), Base64.NO_WRAP); headers.put("Proxy-Authorization", auth); 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.