728x90
Android Studio의 httpsHttpURLConnection를 사용하여 배포된 url과 통신을 해보겠습니다.
<uses-permission android:name="android.permission.INTERNET" />
우선 인터넷을 사용할 수 있게 하기 위해서 AndroidManifest.xml에 위의 코드를 추가해줍니다.
private var output: StringBuilder = StringBuilder()
httpsHttpURLConnection을 통해 읽어오는 값을 저장하는 output을 선언해줍니다.
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val editText = findViewById<EditText>(R.id.editText)
val textView = findViewById<TextView>(R.id.textView)
val button = findViewById<Button>(R.id.button)
button.setOnClickListener {
val urlStr = editText.text.toString()
thread(start = true) {
request(urlStr)
}
textView.text = output
}
}
activity_main.xml에 만들어두었던 editText, textView, button을 가져옵니다. 그리고 button이 눌렸을 때 실행시킬 코드를 작성해줍니다. 버튼이 눌렸을 때 editText에 있는 값을 문자로 만들어 urlStr에 저장해주고, thread를 사용하여 request 함수에 urlStr을 매개변수로 넘겨줍니다.
private fun request(urlStr:String){
try {
val url = URL(urlStr)
val conn: HttpURLConnection = url.openConnection() as HttpURLConnection
if (conn != null) {
conn.connectTimeout = 10000
conn.requestMethod = "GET"
conn.doInput = true
val resCode = conn.responseCode
val reader: BufferedReader = BufferedReader(InputStreamReader(conn.inputStream))
var line: String? = null
while(true) {
line = reader.readLine()
if(line == null) {
break
}
output.append(line + "\n")
}
reader.close()
conn.disconnect()
}
} catch (ex:Exception) {
println("예외 발생함: " + ex.toString())
}
println("응답: " + output.toString())
}
HttpURLConnection 객체인 conn을 만들어서 변수 설정을 해주고, BufferedReader 객체인 reader를 만들어줍니다. 읽어 올 수 있는 정보가 없을 때까지 reader.readline()을 사용하여 값을 읽어오고, 그 값을 output에 저장해줍니다.
728x90
'Project > flask app 통신' 카테고리의 다른 글
[flask app 통신] post.html을 만들어보자 (0) | 2021.03.17 |
---|---|
[flask app 통신] app.py를 만들어보자 (0) | 2021.03.11 |
[flask app 통신] 프로젝트 설명 (2) | 2021.03.10 |