안녕하세요 이번 시간에는 5강 네트워킹의 세번째 강의인 '웹으로 요청하기' 리뷰입니다.
마찬가지로 개념을 알아보면서 실습한 내용을 덧붙여 알아보도록 하겠습니다!
웹으로 요청을 하고 응답을 받으면 응답 데이터를 확인하여 화면에 보여줄 수 있습니다.
애플리케이션에서 웹서버에 요청하는 방식은 표준 자바를 이용하여 요청할 때와 크게 다르진 않지만 스레드를 사용해야 합니다.
또한 Textview 등에 글자를 보이게 하고 싶다하면 스레드에서 응답을 받은 것이므로 핸드러를 사용해야 합니다.
<uses-permission android:name = "android.permission.INTERNET"/>
우선 소켓을 이용할 때와 마찬가지로 인터넷 권한을 부여해줘야하겠죠?
AndroidManifest.xml 파일을 열어 코드를 추가해줍니다.
package com.example.myhtpp;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class MainActivity extends AppCompatActivity {
EditText editText;
TextView textView;
String urlStr;
Handler handler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = (EditText) findViewById(R.id.editText2);
textView = (TextView) findViewById(R.id.textView);
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
urlStr = editText.getText().toString();
RequestThread thread = new RequestThread();
thread.start();
}
});
}
//웹으로 요청을 보내고 응답을 받는 스레드
class RequestThread extends Thread{
public void run(){
try{
URL url = new URL(urlStr);
//사용자가 입력한 URL 정보를 이용해 URL 객체를 만들고 openConnection 메소드를 호출하면 HttpURLConnection 객체가 반환
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
if(conn != null){
//10초 동안 응답을 기다려서 응답이 없으면 끝냄
conn.setConnectTimeout(10000);
conn.setRequestMethod("GET");
conn.setDoInput(true);
conn.setDoOutput(true);
//getResponseCode 메소드를 호출하면 웹서버에 연결하고 응답을 받아줌
int resCode = conn.getResponseCode();
//들어오는 데이터를 받을 수 있는 통로 생성, BufferedReader 객체는 한 줄씩 읽어 들일 때 사용
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line = null;
while (true){
line = reader.readLine();
if(line == null){
break;
}
println(line);
}
reader.close();
conn.disconnect();
}
}catch (Exception e){
e.printStackTrace();
}
}
}
public void println(final String data){
handler.post(new Runnable() {
@Override
public void run() {
textView.append(data + "\n");
}
});
}
}
위 코드에 대한 결과 화면은 아래와 같습니다.
실행을 하고 요청하기 버튼을 눌렀을 때 Naver의 응답을 받아 한줄씩 읽어와 출력해주는 것을 확인할 수 있습니다.
글 읽어주셔서 감사합니다 :)
'안드로이드' 카테고리의 다른 글
[Android] 5. 네트워킹 - JSON 이해하기 (0) | 2019.07.29 |
---|---|
[Android] 5. 네트워킹 - Volley 사용하기 (0) | 2019.07.29 |
[Android] 5. 네트워킹 - 소켓 사용하기 (0) | 2019.07.28 |
[Android] 5. 네트워킹 - 스레드 이해하기(2) (0) | 2019.07.25 |
[Android] 5. 네트워킹 - 스레드 이해하기(1) (0) | 2019.07.24 |
댓글