본문 바로가기

Project/flask app 통신

[flask app 통신] Android Studio를 통한 https 요청

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