앱_서버 Okhttp 라이브러리 사용을 위한 설정

728x90

앱_서버 백엔드 사용을 위한 설정

🟩 이클립스 설정

  • 서버 프로그램 구현을 위해 사용할 이클립스 기본 설정을 수행
  • Apache Tomcat 9.0 서버와의 연동 설정 수행
  • 프로젝트 생성하고 실행 테스트를 수행

🟩 OkHttp 라이브러리

  • REST API, HTTP 통신을 간편하게 구현할 수 있도록 다양하고 매우 간단하게 서버와 통신을 가능하도록 제공하는 라이브러리
  • https://square.github.io/okhttp/

➡️ OkHttp 라이브러리를 앱 프로젝트에 적용하기

  • module 수준의 gradle 파일에 라이브러리 의존성 추가
implementation("com.squareup.okhttp3:okhttp:4.10.0")
  • manifests/AndroidManifest.xml 파일 속에
  • - 1) 통신하고자 하는 프로토콜이 Http 이기 때문에 접근 보안을 풀어주기 위한 설정 추가로 필요
android:usesCleartextTraffic="true">

- 2) ‘네트워크 권한’ 추가

<uses-permission android:name="android.permission.INTERNET

📍AndroidManifest.xml 파일 전체 내용물

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.okhttpapp">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.OkHttpApp"
        android:usesCleartextTraffic="true">
        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

    <uses-permission android:name="android.permission.INTERNET"/>

</manifest>
  • MainActivity.kt

-1) 네트워크 관련 처리는 반드시 스레드를 발생시켜야 한다.

class MainActivity : AppCompatActivity() {

    //뷰 바인딩 설정
    lateinit var mainActivityBinding : ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        //inflate()로 바인딩 객체 불러오기
        mainActivityBinding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(mainActivityBinding.root)

        //뷰 속 버튼 이벤트 처리
        mainActivityBinding.connectBtn.setOnClickListener {
            //네트워크 관련 처리 시 스레드 발생시켜야 함
            thread {
                //연결할 (서버 위에 올려놨던) jsp 의 주소를 사용
                // 단, 주소 속 localhost 대신에 본인 컴퓨터의 ip 주소를 넣어야 함
                val site = "http://172.30.1.16:8080/App3_CommunityServer/test.jsp"

                //okhttp 객체 만듬
                val client = OkHttpClient()

                //요청 관련 정보 만듬
                val request = Request.Builder().url(site).get().build()

                //서버 접속하여 요청
                val response = client.newCall(request).execute()

                                //만약 서버와 통신 성공하게 된 경우, 서버로부터 받은 데이터 추출 처리
                if(response.isSuccessful == true) {
                    val result = response.body?.string()
                    runOnUiThread{
                        mainActivityBinding.resultText.text = result
                    }
                }

            }

        }
    }
}

-2) 연결할 jsp 사이트(서버 올린) 링크 속 localhost → 자기 PC의 ip 주소로 대체할 것

//연결할 (서버 위에 올려놨던) jsp 의 주소를 사용
                // 단, 주소 속 localhost 대신에 본인 컴퓨터의 ip 주소를 넣어야 함
                val site = "http://172.30.1.16:8080/App3_CommunityServer/test.jsp"

📌 본인 PC IP 주소 확인하는 방법

  • cmd 창에서 ipconfig 명령어 입력
  • 만약 이 명령어 인식 못할 때는 ‘고급 시스템 설정’ 에서 다음의 환경 변수 추가한다.
  • PATH 변수에 다음을 추가
C:\WINDOWS\system32

➡️ 이클립스에서 서버 위에 올린 jsp 파일 속 내용은 다음과 같다.

➡️ 서버로부터 성공적으로 받은 데이터를 앱으로 받기.

 

728x90