일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- intArray
- 디버깅 오류
- 군대 개발
- 오류
- 군대 깃허브
- multipart
- Log잘림
- 군대개발
- DataBinding
- REST API
- 군대 github
- text
- 네트워크
- kotlin
- apollo
- Rest
- BindingAdapter
- Encoding
- interface
- RETROFIT
- android studio cloud
- Status Bar
- Android
- log
- Di
- 군대에서 안드로이드 개발
- Compose
- android 오류
- okhttp
- 뷰 겹침
- Today
- Total
KDY
Authorization header is invalid -- one and only one ' ' (space) 본문
Authorization header is invalid -- one and only one ' ' (space)
daeyeong 2022. 9. 6. 17:58이번에 s3서버로 이미지를 업로드하는 과정에서 얻은 오류이다.
구글링을 해도 잘 해결법이 잘 안 나왔던 관계로 해결 과정을 정리해 봅니다.
서버에 요청을 보냈을때 이러한 오류가 발생했습니다.
처음에는 요청시 Header값이 안 들어가서 나타나는 오류인 줄 알았습니다.
하지만 이 오류는 Request요청 Url에 쓸모없는 ' ' 값이 들어가서 나타나는 오류였습니다.
그럼 제가 이 오류를 해결한 방법을 알려 드리겠습니다.
저의 경우 POST맨으로 요청 시에는 정상적으로 작동을 했습니다.
하지만 Android에서 같은 조건으로 Request요청 시 위와 같은 오류가 났습니다.
오류의 원인은 Requset 요청시 URl이 Encoding 되어 요청되었기 때문입니다.
EX)
Encoding전 | Encoding후 |
2022/20220829_190735.jpg?Content-Type=image%2Fjpeg&X-Amz-Algorithm= | 2022%2F20220829_190735.jpg%3FContent-Type=image%252Fjpg&X-Amz-Algorithm= |
이런식으로 URL이 변경되면서 오류가 났습니다.
해결법은 간단 했습니다.
url부분에 encoded = true를 넣어주시면 됩니다.
하지만 저는 코드를 넣어줘도 ?가 %3F로 나와서 따로 변경을 해줬습니다.
따로 Okhttp를 사용하여 적용했습니다.
internal class MyInterceptor : Interceptor {
@Throws(IOException::class)
override fun intercept(chain: Interceptor.Chain): Response {
val request: Request = chain.request()
var stringurl = request.url.toString()
stringurl = stringurl.replace("%3F", "?")
val newRequest: Request = Request.Builder()
.url(stringurl)
.build()
return chain.proceed(newRequest)
}
}
okHttpClient = OkHttpClient.Builder()
.addInterceptor(MyInterceptor())
.build()
이런식으로 Okhttp에 추가 해주면 %3F 문자가 ?로 가게 됩니다.
Reference
https://kanoos-stu.tistory.com/56
[Android] Retrofit 요청 시 url 인코딩 안 되게 하기
문제 retrofit으로 RestAPI 요청 작업 시 url에 서비스키(accessKey)가 들어가야하는 경우가 종종 있는데 이 때, 서비스키에 = 또는 + 와 같이 인코딩 시 문자가 바뀌어 요청이 되어 에러를 발생하게 된다.
kanoos-stu.tistory.com