본문 바로가기
프로그래밍

403 error 해결 방법

by 두꺼비사장 2023. 4. 9.
728x90

response:Response{protocol=h2, code=403, message=, url=xxxx ...

 

Postman이나 Browser에서 URL을 직접 입력 시 정상으로 서버에서 data가 전달 되는데, 

Android (kotlin, java) 단말에서만 403 response error 발생 하면, 원인은 서버단에서 'user-agent'를 check 하기 때문이다.

이를 해결 하는 방법은 okHttpClient에 intercept를 사용 해야 한다.

 

build.gradle에 아래 추가

implementation 'com.facebook.stetho:stetho-okhttp3:1.5.1'
implementation 'com.facebook.stetho:stetho:1.5.1'

 

addHeader에 "User-Agent" 추가(Microsoft Edge User Agent 추가)

class RequestInterceptor : Interceptor {
    override fun intercept(chain: Interceptor.Chain): Response {
        val builder = chain.request().newBuilder()
        builder.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537")
        return chain.proceed(builder.build())
    }
}
val interceptorClient = OkHttpClient().newBuilder()
    .addInterceptor(RequestInterceptor())
    .build()
@Singleton
@Provides
fun provideNasdaq(): NasdaqApi {
    return Retrofit.Builder()
        .baseUrl(NasdaqApi.BASE_URL)
        .client(interceptorClient)
        .addConverterFactory(MoshiConverterFactory.create())
        .build()
        .create(NasdaqApi::class.java)
}