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)
}
'프로그래밍' 카테고리의 다른 글
git 작업 되돌리기 (0) | 2023.04.09 |
---|---|
포토피아 (0) | 2023.02.19 |
prepareKotlinBuildScriptModel Task fails in a Java project 해결 방법 (0) | 2023.02.05 |
Execution failed for task ':app:kaptDebugKotlin'. 오류 해결 방법 (0) | 2022.10.14 |
Could not start AVD 문제 해결 방법 (0) | 2022.10.10 |