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 |
Tags
- onMeasure
- kotlin
- Algorithm
- recyclerview
- DataBinding
- CoordinatorLayout
- notification
- 안드로이드
- 알고리즘
- 알림
- hilt
- LiveData
- sqlite
- Android
- HTTP
- Behavior
- CustomView
- room
- lifecycle
- 코틀린
- 백준
- ViewModel
- Coroutine
- AppBarLayout
- BOJ
- Navigation
- activity
- CollapsingToolbarLayout
- View
- onLayout
Archives
- Today
- Total
개발일지
Android in A..Z - HTTP (URLConnection) 본문
URLConnection
Java에서 HTTP 통신을 제공하는 기본적인 라이브러리이다. JDK 1.1 시절부터 있던 라이브러리고 JDK 1.1은 1997년 2월 19일에 나왔다. 즉 1996년 HTTP/1.0을 기준으로 개발한 라이브러리기 때문에 버그가 있을 수도 있다.
코드
private fun getUrlencoded() {
thread {
(URL("${getURL()}?${getParameter()}").openConnection() as HttpURLConnection).apply {
doInput = true
doOutput = false
requestMethod = "GET"
connectTimeout = 3000
readTimeout = 3000
setRequestProperty("Content-Type", "application/x-www-form-urlencoded")
try {
inputStream.bufferedReader().use {
val result = it.readText()
Handler(Looper.getMainLooper()).post {
binding.resultTextView.text = result
}
}
} catch (e: Exception) {
val result = "${this.responseCode} : $responseMessage"
Handler(Looper.getMainLooper()).post {
binding.resultTextView.text = result
}
}
disconnect()
}
}
}
private fun getJson() {
thread {
(URL(getURL()).openConnection() as HttpURLConnection).apply {
doInput = true
doOutput = true
requestMethod = "GET"
connectTimeout = 3000
readTimeout = 3000
setRequestProperty("Content-Type", "application/json")
outputStream.bufferedWriter().use {
it.write(getParameter())
}
try {
inputStream.bufferedReader().use {
val result = it.readText()
Handler(Looper.getMainLooper()).post {
binding.resultTextView.text = result
}
}
} catch (e: Exception) {
val result = "${this.responseCode} : $responseMessage"
Handler(Looper.getMainLooper()).post {
binding.resultTextView.text = result
}
}
disconnect()
}
}
}
private fun post() {
thread {
(URL(getURL()).openConnection() as HttpURLConnection).apply {
doInput = true
doOutput = true
requestMethod = "POST"
connectTimeout = 3000
readTimeout = 3000
setRequestProperty("Content-Type", selectedContentType)
headerFields
outputStream.bufferedWriter().use {
it.write(getParameter())
}
try {
inputStream.bufferedReader().use {
val result = it.readText()
Handler(Looper.getMainLooper()).post {
binding.resultTextView.text = result
}
}
} catch (e: Exception) {
val result = "${this.responseCode} : $responseMessage"
Handler(Looper.getMainLooper()).post {
binding.resultTextView.text = result
}
}
disconnect()
}
}
}
- 기본적으로 비동기를 지원하지 않기 때문에 Thread를 새로 만들어서 실행해야한다.
- URL클래스를 생성하여 openConnection을 사용해 URLConnection 객체를 얻는다.
- doInput : Response를 받고 Response Message를 확인할 때 true로 설정한다. (기본값 : true)
- doOutput : HTTP Body에 내용을 적을 때 사용한다. (기본값 : false, true로 설정하면 requestMethod가 자동으로 POST로 변한다.)
- requestMethod : HTTP Method를 설정한다.
- connectTimeout : Connect Time Out을 설정한다.
- readTimeout : Read Time Out을 설정한다.
- setRequestProperty : HTTP Head에 작성할 내용을 적는다.
- outputStream : HTTP Body에 내용을 적을 수 있는 Stream이다. 사용하려면 doOutput이 true여야 한다.
- inputStream : Response Message의 HTTP Body를 읽을 수 있다.
- headerFields : Response Message의 HTTP Header를 확인을 수 있다.
예제코드
github.com/KangTaeJong98/Example/tree/main/Android/HTTP
'Android (안드로이드) > HTTP' 카테고리의 다른 글
Android in A..Z - HTTP (Retrofit2) (0) | 2021.03.16 |
---|---|
Android in A..Z - HTTP (Volley) (0) | 2021.03.16 |
Android in A..Z - HTTP (개념) (0) | 2021.03.12 |
Comments