복붙노트

[ANDROID] 어떻게 사용하는 기본 인증은 안드로이드에 발리로합니까?

ANDROID

어떻게 사용하는 기본 인증은 안드로이드에 발리로합니까?

해결법


  1. 1.네, 그것은 가능합니다. 당신은) (Request.getHeaders를 오버라이드 (override) 할 필요가있다. 나는 게으른 그리고 난 안드로이드 봄에서 HttpHeaders 및 HttpAuthentication를 사용하지만, 당신은 단지 인증 헤더를 구축하고 방법에서 반환 할 수 있습니다. 대해 getHeaders에서 ()는 기본 인증에 대한 인증 헤더를 반환 할 수 있습니다. 이 기본 인증과 샘플 요청입니다.

    네, 그것은 가능합니다. 당신은) (Request.getHeaders를 오버라이드 (override) 할 필요가있다. 나는 게으른 그리고 난 안드로이드 봄에서 HttpHeaders 및 HttpAuthentication를 사용하지만, 당신은 단지 인증 헤더를 구축하고 방법에서 반환 할 수 있습니다. 대해 getHeaders에서 ()는 기본 인증에 대한 인증 헤더를 반환 할 수 있습니다. 이 기본 인증과 샘플 요청입니다.

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

    그리고 여기가 인증 헤더를 구축하는 방법이다

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

  2. 2.그냥 안드로이드에 대한 스프링을 사용하지 않는 사람들을 위해, 여기 그것을하는 방법은 다음과 같습니다.

    그냥 안드로이드에 대한 스프링을 사용하지 않는 사람들을 위해, 여기 그것을하는 방법은 다음과 같습니다.

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

    직장이 대신 Base64.DEFAULT의 Base64.NO_WRAP를 사용해야 할 수도 있습니다. 코멘트에 지적.

    API 8 +


  3. 3.프록시 인증 (오징어 등)의 경우이 헤더를 사용합니다 :

    프록시 인증 (오징어 등)의 경우이 헤더를 사용합니다 :

    String credentials = proxyUsername + ":" + proxyPassword;
    String auth = "Basic "  + Base64.encodeToString(credentials.getBytes(), Base64.NO_WRAP);                
    headers.put("Proxy-Authorization", auth);
    
  4. from https://stackoverflow.com/questions/16817980/how-does-one-use-basic-authentication-with-volley-on-android by cc-by-sa and MIT license