[Android Studio] 같은 네트워크 환경에서 열어놓은 아파치 서버로 POST요청 보낼때 URL작성시 주의할 점!

2024. 10. 1. 22:23·모바일 앱개발(Kotlin-PHP-Mysql)

안녕하세요! 이번 게시물에선 로컬 컴퓨터에 열려있는 아파치 서버로 Android Studio를 통해 POST 요청을 보내는 법을 설명해 보겠습니다. 제가 이 게시물을 왜 작성하는 것이냐면 저는 단순히 Android 기기가 http://127.0.0.1/login.php로 Post 요청을 보내면 정상적으로 응답이 될 줄 알았습니다. 노트북과 핸드폰이 같은 와이파이에 접속한 상태라서 127.0.0.1로 들어가도 괜찮다고 생각을 했지만 아니었습니다!

 

아파치 서버가 열려있는 로컬 컴퓨터의 내부 아이피 주소를 확인한 후 (저의 경우는 192.168.0.9) , http://192.168.0.9/login.php라고 보내주어야 정상적으로 동작을 하게 되었습니다. 평소에 아파치 서버를 그냥 http://localhost/login.php 이런 식으로 접속을 한 터라 제가 착각을 했네요.. 혹시 이 글을 보실 분들에게 도움 되는 정보였으면 하는 바람입니다!

 

코드에 대한 자세한 설명은 다음 게시물인 Kotlin-PHP-MYSQL 연동하기 에서 할 예정입니다!

이 게시글은 웹요청 시 주소에 대한 유의사항을 위해 작성한 게시글입니다.


[웹서버로 POST요청을 보낸 후 응답확인 코드]-약식

override fun onCreate(savedInstanceState: Bundle?) {  //해당 액티비티가 최초 실행되었을때 수행
        super.onCreate(savedInstanceState)
        enableEdgeToEdge()
        setContentView(R.layout.login_main)  // xml 화면 뷰를 연결한다.
        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.tvtitle)) { v, insets ->
            val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
            insets
        }


        mBinding = LoginMainBinding.inflate(layoutInflater)  //xml파일과 액티비티 연결
        setContentView(binding.root)    // xml의 부모 바인딩을 가져온다.
        // binding.tvtitle.setText("")   //텍스트의 값을 변경한다

        binding.btnLogin.setOnClickListener {    //로그인 버튼 클릭시 동작
            var userid: String = binding.sendId.text.toString() //에딧테스트에 입력되있는값
            var userpass: String = binding.sendId.text.toString() //에딧테스트에 입력되있는값

            CoroutineScope(Dispatchers.IO).launch { //네트워크 요청은 백그라운드 스레드에서 실행
                var requestresult = sendPostRequest(userid, userpass)

                withContext(Dispatchers.Main) {	//UI 처리는 메인스레드 에서 실행
                    if (requestresult == 1) {	// sendPostRequest 함수의 반환값이 1이면
                        val intent =
                            Intent(
                                this@LoginActivity,
                                SubActivity::class.java
                            )//다음 화면으로 이동하기 위한 인텐트 객체 생성.
//            intent.putExtra("userid",text_result)
                        startActivity(intent)	//SubActivity 로 이동
                    } else {	//반환값이 0이라면
                        Toast.makeText(	//로그인 실패 메세지 출력
                            this@LoginActivity,
                            "Login failed. Please try again.",
                            Toast.LENGTH_SHORT
                        ).show()
                    }
                }
            }
        }


// 서버로 HTTP 요청을 보내는 함수
    fun sendPostRequest(userid: String, password: String): Int {
        val url = URL("http://192.168.0.9/login.php")
        val postData = JSONObject()
        postData.put("id", userid)
        postData.put("pass", password)

        val result = with(url.openConnection() as HttpURLConnection) {
            requestMethod = "POST"
            doOutput = true

            val outputStream = BufferedOutputStream(outputStream)
            BufferedWriter(OutputStreamWriter(outputStream, "UTF-8")).use { writer ->
                writer.write(postData.toString())
                writer.flush()
            }


            //url로 데이터 전송후 서버로부터 응답을받는 부분
            if (responseCode == HttpURLConnection.HTTP_OK) {
                BufferedReader(InputStreamReader(inputStream)).use { reader ->
                    val response = StringBuilder()
                    var line: String?
                    while (reader.readLine().also { line = it } != null) {
                        response.append(line)
                    }
                    //디버깅
                    Log.d("HTTP_POST", "Response: $response")   // 결과값 Logcat 으로 확인가능!
                    return@with 1
                }
            } else {
                Log.e("HTTP_POST", "Error: $responseCode")  //에러발생시 에러코드 출력!
                return@with 0
            }
        }
        return result
    }

[본인 내부 아이피 주소 알아내는 법]

 

1. 우선 CMD 창을 켜준후 ipconfig를 입력합니다. 이후 본인의 IPv4 주소를 확인합니다.


 

2.URL 요청 코드 작성 시 확인했던 내부 아이피주소로 작성하셔야 합니다.


긴 글 읽어주셔서 감사합니다!

'모바일 앱개발(Kotlin-PHP-Mysql)' 카테고리의 다른 글

[Android Studio] 로그인 한 아이디 저장하는 기능 구현-Kotlin  (0) 2024.10.03
[Android Studio] (Kotlin ↔ PHP ↔ MYSQL) 연동을 통해 로그인 기능 구현하기  (1) 2024.10.02
[Android Studio] layout폴더와 activity_main.xml 이 없을때 해결방법  (0) 2024.09.27
[Android Studio]안드로이드 스튜디오 무선 기기연결로 작업하기!  (1) 2024.09.24
Andriod Studio 설치 및 세팅(feat.에뮬레이터에 검은화면만 나올때 해결방법)  (0) 2024.09.17
'모바일 앱개발(Kotlin-PHP-Mysql)' 카테고리의 다른 글
  • [Android Studio] 로그인 한 아이디 저장하는 기능 구현-Kotlin
  • [Android Studio] (Kotlin ↔ PHP ↔ MYSQL) 연동을 통해 로그인 기능 구현하기
  • [Android Studio] layout폴더와 activity_main.xml 이 없을때 해결방법
  • [Android Studio]안드로이드 스튜디오 무선 기기연결로 작업하기!
무너박사
무너박사
IT 보안 블로그 입니다. 제가 작성하는 블로그가 누군가의 공부에 조금이라도 도움이 되길 바라며 작성하였습니다.
  • 무너박사
    무너박사의 연구일지
    무너박사
  • 전체
    오늘
    어제
    • 분류 전체보기 (104)
      • WEB 지식 (3)
      • 웹해킹 (13)
      • 웹개발(PHP-Mysql) (12)
      • 웹개발(JSP-Oracle) (2)
      • 워게임 문제풀이 (19)
        • Segfault (17)
        • Dreamhack (2)
      • SQL (3)
      • Python (2)
      • AI (1)
        • LLM(Large Language Model) (1)
      • Kail Linux (3)
      • 잡다한 지식 (2)
      • 모바일 앱개발(Kotlin-PHP-Mysql) (13)
      • 모바일 앱해킹(Android) (31)
        • Frida Lab (2)
        • Android DIVA (8)
        • Insecure Bank (20)
      • 안드로이드 위협 탐지 및 우회 (0)
        • 루팅 탐지 & 우회 (0)
        • 디버깅 탐지 & 우회 (0)
        • 에뮬레이터 탐지 & 우회 (0)
        • Frida 탐지 & 우회 (0)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      XSS
      Blind sql injection
      모바일앱개발
      시스템해킹
      취업반6기
      Android Studio
      앱해킹
      insecure bank
      dom based xss
      웹해킹
      android diva
      칼리리눅스
      워게임
      안드로이드 스튜디오
      php
      인시큐어 뱅크
      MySQL
      취업반 6기
      모의해킹
      취업반
      리패키징
      모바일 앱개발
      mobile diva
      모바일 앱해킹
      Koltin
      Kotlin
      normaltic
      인시큐어뱅크
      sql injection
      해킹
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    무너박사
    [Android Studio] 같은 네트워크 환경에서 열어놓은 아파치 서버로 POST요청 보낼때 URL작성시 주의할 점!
    상단으로

    티스토리툴바