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?

  • Comment puis-je étendre le spinner pour implémenter une nouvelle fonction?
  • Comment puis-je déterminer si un géopoint est affiché dans la zone actuellement visible?
  • Android View.onDraw () a toujours un Canvas propre
  • Création d'une case à cocher de trois états sur Android
  • ImageView getLayoutParams () renvoie null
  • SwitchPreference onChecked / onClick Listener
  • Android - sqlite dans la clause utilisant les valeurs du tableau
  • Affichage du clavier sans animation
  • Analysez avec le login de Facebook - Possible depuis APK v42 ou Graph API v2.4
  • Performance de l'application Phonegap par rapport à la performance native de l'application
  • Comment empêcher l'appel surCreateView lorsque le bouton de retour est pressé dans un fragment dans Android
  • WakefulBroadcastReceiver ne peut pas être résolu à un type
  • 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.