반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 스레드
- 자바
- 알고리즘
- kotlin강좌
- 안드로이드스튜디오
- Compose
- 안드로이드
- k8s
- 병럴프로그래밍
- 안드로이드강좌
- g 단위테스트
- Gradle
- 디자인패턴
- 병렬프로그래밍
- ReactiveProgramming
- 코루틴
- 알게되는
- 커스텀상태
- 테스트
- Coroutine
- viewmodel
- Rxjava
- 코틀린
- 회고
- 글또
- 책
- mockito
- android
- Kotlin
- theming
Archives
- Today
- Total
선생님, 개발을 잘하고 싶어요.
URL 구조와 OkHttp3를 이용한 URL 생성 및 파싱 본문
URL 기본구조
<scheme>://<username>:<password>@<host>:<port>/<path>;<parameter>?<query>#<fragment>
scheme
리소스를 어떻게 접근하는가? 어떤 프로토콜을 사용하는가? (ex. http, https, ftp...)
host, port
리소스에 접근할 수 있는 서버가 어디 있나? (www.greedy0110.tistory.com)
path
리소스가 서버의 어디에 있는지 알려준다.
서버가 리소스의 위치를 찾는 데 사용하는 정보
/ 로 구분 (https://.../path1/path2)
parameter
앱이 서버에 정확한 요청을 하기 위해 필요한 입력 파라미터
; 로 시작
query
리소스 형식의 범위를 좁히기 위한 정보
?로 시작 (https://.../path?query1=hello)
& 로 별도의 query 키값 구분 (https://.../path?query1=hello&query2=world)
fragment
리소스의 일부를 지정.
#으로 시작 (https://.../path#fragment)
username, password
사용자 식별 (요즘엔 별도의 방법으로 사용자 인증을 하기 때문에 많이 쓰이지 않는다.)
OkHttp3.HttpUrl
url을 표현하기 위해서 OkHttp3 라이브러리에 들어있는 HttpUrl의 사용법을 알아보자.
생성
val url = HttpUrl.Builder()
.scheme("https") // Either "http" or "https"
.username("greedy0110")
.password("12341234")
.host("www.greedy0110.tistory.com")
.port(80)
.addEncodedPathSegment("105%20version")
.addPathSegment("106 version")
.addQueryParameter("name", "seungmin shin")
.fragment("references")
결과
https://greedy0110:12341234@www.greedy0110.tistory.com:80/105%20version/106%20version?name=seungmin%20shin#references
파싱
val rawUrl = "https://greedy0110:12341234@www.greedy0110.tistory.com:80/105%20version/106%20version?name=seungmin%20shin#references"
val url = rawUrl.toHttpUrlOrNull()!!
with(url) {
println(scheme)
println(username)
println(password)
println(host)
println(port)
println(pathSegments)
println(queryParameterNames)
println(fragment)
}
결과
https
greedy0110
12341234
www.greedy0110.tistory.com
80
[105 version, 106 version]
[name]
references
참고자료
HTTP 완벽 가이드 현재 읽고 있습니다. 두꺼운데 술술 읽히는 내용입니다. HTTP 초심자가 읽기 정말 좋은 듯합니다.
HttpUrl - OkHttp Square 공식 Doc입니다. 왜 java.net.URI, java.net.URL 대신 이 클래스를 설계했는지 보여줍니다.
'개발 > android 개발' 카테고리의 다른 글
[Compose] 소프트 키보드 닫기 (0) | 2022.02.27 |
---|---|
[Android] Styling, Style과 Theme 바로알기 좋은 자료 (0) | 2022.01.23 |
[코틀린] 중첩된 Coroutine 에러 처리 (0) | 2021.12.12 |
안드로이드에서 ISO 8601를 파싱하는 가장 깔끔한 방법 (0) | 2021.09.24 |
[Android] DataBinding, Custom View에 two-way binding을 하는 방법 (0) | 2021.09.19 |
Comments