본문 바로가기

JAVA/Android

[JAVA][Android] GlideUrl을 통해 Url에 권한 부여하기

작업을 하다 보면 간혹 사용해야 하는 url에 암호가 걸려있는 경우가 있다.

이런 케이스에 웹 브라우저를 통해 url에 접근하면 아래와 같은 팝업이 발생한다.

 

 

소스 작업을 하면서 이런 url에 접근하기 위해서는 header에 권한을 부여해 주어야 한다.

 

일반적으로 url에 접근할 때에는 GlideUrl 클래스를 사용한다.

import com.bumptech.glide.Glide;
import com.bumptech.glide.load.model.GlideUrl;
import com.bumptech.glide.load.model.LazyHeaderFactory;
import com.bumptech.glide.load.model.LazyHeaders;

public class MainActivity extends AppCompatActivity {
    private String sampleUrl = "http://dummy.url.com"
    private static final String AUTHORIZATION = "saMpleAUthoRizaTion="

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        setGlideUrlAuthorization();
        setGlideUrlBuilder();
    }

    //방법1 
    public void setGlideUrlAuthorization(){
        GlideUrl imageUrl = new GlideUrl(sampleUrl, new LazyHeaders.Builder()
                            .addHeader("Authorization", AUTHORIZATION).build());
    }
    
    //방법2
    public void setGlideUrlBuilder(){
    	GlideUrl imageUrl = new GlideUrl(sampleUrl, new LazyHeaders.Builder()
                            .addHeader("Authorization", new LazyHeaderFactory() {
                                @Nullable
                                @Override
                                public String buildHeader() {
                                    return AUTHORIZATION;
                                }
                            }).build());
	}
    
}

 

방법은 두가지를 사용했으며 크게 다르지 않다.

 

우선 GlideUrl로 해당 이미지의 url을 로드한다.

new GlideUrl의 두 번 째 인자에 header를 추가하여 해당하는 사용자명과 암호를 작성하면 된다.

 

방법1과 2가 다른 점은 LazyHeaderFactory를 사용하여 header를 직접 빌드하였느냐 아니냐의 차이이며

두 가지 다 정상 동작하는 것을 확인할 수 있다.

 

저렇게 추출해낸 url을 Glide.load()를 통해 화면에 표시하면 된다.