티스토리 뷰
웹 요청하기
웹에 요청하기 위해서는 INTERNET 권한이 필요하므로
권한 획득이 복잡한 마시멜로우에서 롤리팝 버전으로 낮추어 테스트를 해보았습니다.
'Gradle Scripts' 의 'build.gradle' 에서 버전을 먼저 낮춘다.
버전을 낮추면 MainActivity에서
public class MainActivity extends ActionBarActivity {
로 바꾸어 준다.
버전을 낮추고 인터넷 접속 권한을 얻는다.
인터넷 접속 권한 얻기
Manifest.xml 에서 INTERNET 권한을 얻는 Permission을 작성한다.
<!-- Mobile Networt(MNC, MCC) 를 사용하기 위한 권한 획득 -->
<uses-permission android:name="android.permission.INTERNET" />
웹으로 요청하기
URL 주소를 입력하고 버튼을 누르면 URL로 접속하여 응답을 받아온 뒤 TextView에 응답을 출력하는 코드를 짜보았다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 | package com.ktds.jmj.myrequestweb; import android.os.Bundle; import android.os.Handler; import android.support.v7.app.ActionBarActivity; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; public class MainActivity extends ActionBarActivity { private Button btnSearch; private EditText etURL; private TextView tvResult; private Handler handler; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btnSearch = (Button) findViewById(R.id.btnSearch); etURL = (EditText) findViewById(R.id.etURL); tvResult = (TextView) findViewById(R.id.tvResult); handler = new Handler(); btnSearch.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // HTTP 로 요청을 보낸다. Thread 작업이 필요함 new Thread(new Runnable() { @Override public void run() { // 작업시작 String url = etURL.getText().toString(); try { //요청을 보낼 URL 인스턴스 정보 URL httpURL = new URL(url); // 요청을 보내기 위한 준비를 한다.( 요청을 보내기 전) HttpURLConnection conn = (HttpURLConnection) httpURL.openConnection(); conn.setDoInput(true); conn.setDoOutput(true); // 최대 요청 지연 시간, 요청이 5초 이상 걸릴 경우 요청을 끊는다. conn.setConnectTimeout(5000); /** * GET 요청을 한다. * POST 요청을 원할 경우 "POST"라고 작성한다. */ conn.setRequestMethod("GET"); // 요청을 보내고, 동시에 응답을 받는다. int responseCode = conn.getResponseCode(); // 요청과 응답이 제대로 이루어졌는지 검사한다. // HttpURLConnection.HTTP_OK : 응답이 200 OK 라는 의미이다. if( responseCode == HttpURLConnection.HTTP_OK ){ // 응답 본문 전체를 닫는다. final StringBuffer responseBody = new StringBuffer(); // 응답 본문의 한줄 한줄씩 얻어온다. String line = null; /** * 응답 본문을 담고 있는 InputStream 을 얻어온다. * BufferedReader 는 InputStream 한줄 씩 얻어올 수 있는 객체다. */ BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); while ( (line = reader.readLine()) != null ){ // 응답 본문이 종료될 때 까지 반복한다. // 응답 본문 한줄씩 결과 객체에 담는다. // 줄바꿈을 위해서 매 라인 끝마다 "\n"을 더해준다. responseBody.append(line + "\n"); } // 연결을 순차적으로 끊는다. reader.close(); conn.disconnect(); /** * 독립된 Thread 에서 Android Application 에 Main Thread 로 접근할 수 있는 Handler * UI View 를 컨트롤 한다. */ handler.post(new Runnable() { @Override public void run() { // 결과를 사용자에게 보여준다. tvResult.setText(responseBody.toString()); } }); } } catch (MalformedURLException e) { return; } catch (IOException e) { return; } } }).start(); } }); } } | cs |
결과화면
'Android' 카테고리의 다른 글
[Android] APK 생성 (0) | 2016.07.29 |
---|---|
[Android] ListView (리스트 뷰) (0) | 2016.07.29 |
[Android] 항목 선택 MultiChoiceItems, SingleChoiceItems (1) | 2016.07.25 |
[Android] 권한 획득 (0) | 2016.07.25 |
[Android] AlertDialog 를 이용한 알림창 (0) | 2016.07.21 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- mybatis
- 자바
- java
- AlertDialog.Builder
- servlet
- sort
- indexOf
- restfb
- list
- Baekjoon Online Judege
- 안드로이드 비콘
- DFS
- jsp
- 안드로이드 스튜디오
- algorithm
- RequestMapping
- order by
- Spring
- 예외처리
- DP
- INSERT
- table
- maven
- onBackPressed
- controller
- boj
- BFS
- REDIRECT
- onPostExecute
- 이클립스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함