Comment utiliser l'authentification de base avec Volley sur Android?

Je regarde des exemples et des codes, mais je ne vois rien d'autre. Est-ce possible à ce stade?

  • Android - Comment obtenir la valeur d'élément sélectionnée à partir d'un spinner et le mettre dans une chaîne?
  • Est-ce que le collectionneur d'ordures d'Android met en pause d'autres applications pendant l'exécution?
  • Comment maintenir l'état du fragment sans backstack dans l'onglet?
  • Comment obtenir un effet de couleur magique comme Cam Scanner en utilisant OpenCV
  • Android WebView 302 Redirect - Honeycomb
  • Boutons flottants Android sur une vue
  • Comment signer un APK avec plus d'un certificat?
  • 'Dépendance de modèle non prise en charge: mise à niveau de votre plugin Eclipse Android avec SDK Tools v22
  • Android java lang runtimeexception ne se connecte pas au service de caméra
  • Comment puis-je configurer par défaut le clavier numérique sur EditText sans forcer l'entrée numérique?
  • Android: Problème avec newView et bindView dans CustomCursorAdapter personnalisé
  • Android Studio comment exécuter manuellement la synchronisation gradle?
  • 3 Solutions collect form web for “Comment utiliser l'authentification de base avec Volley sur Android?”

    Oui c'est possible. Vous devez annuler Request.getHeaders (). Je suis paresseux et j'ai utilisé HttpHeaders et HttpAuthentication depuis Spring pour Android, mais vous pouvez simplement créer l'en-tête auth et le renvoyer de la méthode. De getHeaders (), vous pouvez renvoyer l'en-tête d'authentification pour l'authentification de base. Il s'agit d'un exemple de demande avec l'authentification basique.

    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(); } } 

    Et voici comment je crée les en-têtes d'auth

     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; } 

    Pour ceux qui ne veulent pas utiliser Spring pour Android juste pour cela, voici comment le faire.

     @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; } 

    Notez que vous devrez utiliser Base64.NO_WRAP au lieu de Base64.DEFAULT pour que cela fonctionne. Comme indiqué dans les commentaires.

    API 8+

    Pour une autorisation de proxy (comme le calmar), utilisez cet en-tête:

     String credentials = proxyUsername + ":" + proxyPassword; String auth = "Basic " + Base64.encodeToString(credentials.getBytes(), Base64.NO_WRAP); headers.put("Proxy-Authorization", auth); 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.