- 인터넷 설명 -
- 내 설명 -
이전 블로그에서 네트워킹부분에 처음에 쓸 때, "소켓"이라는 것을 알아 봤구요,
"소켓"은 두개의 컴퓨터 간에,
이게 "모바일 단말"이 됬건, 또는 "PC"가 됬건,
그게(소켓) 컴퓨터 간에 통로를 만들어 주고,
이 통로 간에 "데이터"를 주고 받을 수 있게 만들어주는 방법이라고 생각 하시면 됩니다.
그리고, "웹"이라는 것은 "HTTP"라고 합니다.
보통, "웹브라우저"에서 보낸 페이지(=웹페이지)가 데이터가 왔다갔다 해야지 보여지는 겁니다.
근데, 그게,
서버에서 보내고, 요청하고 하는 것들이 어떤 "규칙"으로 보내라라고 정해져 있는 겁니다.
그게 "HTTP"라고하는 "표준 프로토콜"이라고 합니다.
"표준 프로토콜"이라는 것이 그냥 약속이라는 뜻이다.
("이런 형식으로 보내면 내가 이렇게 해줄께" 라는 약속 입니다.)
HTTP라는게 옛날에는 앱,스마트폰이라는게 생기기 전에
그 때는 무선 환경이 매우 안좋았기 때문에 HTTP를 많이 사용을 못했습니다.
(데이터를 주고 받을 때 모바일에서는 HTTP를 많이 사용 못했음, 왜냐하면, 데이터양이 많아지고 하기 때문에 입니다,
그렇지만 지금은, 단말 성능도 좋아지고 무선도 좋아지면서, 네트워킹이 소켓을 사용하면서 데이터를 주고 받는 경우도 있지만,
이제,
웹을 이용하는 경우가 많아졌습니다!!!!!!! 웹을 이용하는 것을 권장합니다.!!!)
웹을 사용하게 되면 여러가지 장점이 있습니다.
왔다갔다하는 데이터에 방식이라든가, 표준으로 딱 정해져 있는 방식을 사용하기 때문에 좀 더 빨리 만들 수가 있고,
문제가 생기면, 빨리 파악할 수 있다는 장점이 있습니다.
그대신에,
보안에는 나쁩니다!
누군가가 중간에 끼어서 해킹을 할 수도 있기 때문 입니다....
-------------------------------------------------------------------------------------
자,, 이제 그러면 Http라고 하는 웹방식을 요청을하는 것은 "HttpURLConnection"을 사용 하는 것이 단순한 기본 방식입니다.
안드로이드에서 가장 기본적인 방식입니다.
근데, 단점 있음,
1. 일일이 쓰레드 만들어야됨,
2. 핸들러를 써야됨.
그런데 요즘은, 이런거 안 쓰고 "라이브러리"를 쓰는 경우가 좀 많이 있습니다.
"OkHttp", "Volley" 라고 하는 "라이브러리"들이 있습니다. 이 "라이브러리"를 쓴다면,
쓰레드나 이런 것들을 신경 안쓰도록 만들어진 "라이브러리"들도 있습니다.
("Volley"가 그렇습니다.)
-------------------------------------------------------------------------------------
일딴, 우리가 "HTTP를 요청해서 받을 수가 있다." 라는 것을 보기 위해서,
HttpURLConnection을 이용해서, "HTTP요청"하는 방법을 만들어 보겠습니다.
(참고 - 웹서버 다른 곳을 직접 접속을 해야하는데, 현재 우리가 지금 웹서버를 만들기에는 시간이나, 앱을 중심적으로 공부하고 있기 때문에 소켓서버를 만드는 것처럼 직접 만드는게 좀 시간이 걸립니다,,,,,
그래서 "네이버"나 "다음" 같이 기존에 웹에서 서비스를 하는 곳에서 데이터를 받아와서 뿌려 주겠습니다..
화면에다가 뿌려 줄겁니다.)
"버튼"을 클릭 했을 때,
HTTP방식으로, 이 사이트로 요청을 하는 겁니다,
그러면, 원본 데이터를 받을 겁니다.
- 매니페스트 -
<uses-permission android:name="android.permission.INTERNET"/>
- xml 코드 -
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:text="요청하기"
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<EditText
android:id="@+id/editText"
android:text="http://m.naver.com"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</ScrollView>
</LinearLayout>
- java 코드 -
- 결과 -
이렇게 해서
HTTP라는 프로토콜을 이용해서,
웹서버에 접속한 다음에 "요청"을 하고
"응답"을 받는 코드를 만들어 봤습니다.
-참고-
위에 한것처럼 "핸들러"와 "스레드"를 신경 안쓰는 방법을
사용하고 싶다면!!! 라이브러리("OkHttp", "Volley")를 사용하면 간단하게 사용 할 수 있습니다.
'■ Android > Tip' 카테고리의 다른 글
[Android] 30-3.Volley 사용시 에러 뜨면 -참고- (안드로이드 http 프로토콜 접속 시 예외발생 조치) (0) | 2020.02.14 |
---|---|
[Android] 30-3.Volley 사용법 (0) | 2020.02.14 |
[Android] 30 - 1.HTTP 이해하기 (0) | 2020.02.14 |
[Android] 20 - 3.소켓(핸들러 사용) - "서버"코드를 [서비스]로 변경 (0) | 2020.02.13 |
[Android] 20 - 2.소켓(핸들러 사용) - "클라이언트"의 UI 업데이트 (0) | 2020.02.12 |