Download presentation
Presentation is loading. Please wait.
Published byLora Hutchinson Modified over 9 years ago
1
네트워크 전송 1/2 UNIT 29 로봇 SW 콘텐츠 교육원 조용수
2
학습 목표 Android Network 통신 2
3
Network Permission App 에서 Network 를 사용하기 위해서는 Permission 을 설정해야 한다. 3
4
Network Status Android 에서 사용 가능한 Network 를 검색 모바일 기기는 사용량에 따라 금액을 지불해야 하 므로, 현재 가능한 네트워크 (WiFi, 3G 등 ) 을 체크해 야 한다. 4
5
Network Status 5 public static int checkStatus(Context context) { final ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); final android.net.NetworkInfo wifi = connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI); final android.net.NetworkInfo mobile = connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); final android.net.NetworkInfo wimax = connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIMAX); final android.net.NetworkInfo ethernet = connMgr.getNetworkInfo(ConnectivityManager.TYPE_ETHERNET); if(wifi.isAvailable()) { return ConnectivityManager.TYPE_WIFI; } else if(mobile.isAvailable()) { return ConnectivityManager.TYPE_MOBILE; } else if(mobile.isAvailable()) { return ConnectivityManager.TYPE_MOBILE; } else { return ConnectivityManager.TYPE_DUMMY; }
6
Http 전송 방식 Http 정보 전달 방식 –GET 주소 줄 뒤쪽으로 전달 파라메타가 연결되는 타입 전달 길이가 제한되어, 많은 양의 데이터 전송이 어려움. 주소가 String 으로 전달되어 전달 파라메타가 노출됨. –POST 포함되는 파라메타가 Body 에 포함되어 전달됨. 다량의 데이터 전송이 가능. 주소에 데이터가 노출되지 않음 6
7
HttpClient 7 BufferedReader in = null; StringBuffer sb = new StringBuffer(""); Log.d("HTTP", "Request"); try{ HttpClient client = new DefaultHttpClient(); HttpGet request = new HttpGet(params[0]); HttpResponse response = client.execute(request); in = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); String line = ""; String NL = System.getProperty("line.separator"); while((line = in.readLine())!= null) { sb.append(line + NL); } in.close(); String page = sb.toString(); Log.d("HTTP", "OUTPUT:" + page); } catch(Exception e) { } finally { if(in != null) { try { in.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return sb.toString();
8
Http 제약사항 8 네트워크 응답 시간 문제 : ANR Android 3.0 이후 Foreground 에서 Network 전송 금지. Background Thread 사용 –UI 갱신 위해 Handler 사용 AsyncTask ?
9
HttpClient 9 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tvText = (TextView) findViewById(R.id.text); checkStatus(this); new Thread() { public void run() { BufferedReader in = null; StringBuffer sb = new StringBuffer(""); Log.d("HTTP", "Request"); try { … String page = sb.toString(); Log.d("HTTP", "OUTPUT:" + page); } catch (Exception e) { e.printStackTrace(); } finally { if (in != null) { try { in.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }; }.start();
10
AsyncTask ? Thread 처리 시 Progress 상태와 Thread 결과에 대 해서 UI 반영을 지원하는 Class doInBackground 제외한 메소드에서 UI 작업 가능 10 private class HttpAsyncTask extends AsyncTask { @Override protected String doInBackground(String... params) { return null } @Override protected void onPostExecute(String result) { } @Override protected void onPreExecute() { } @Override protected void onProgressUpdate(Integer... values) { }
11
AsyncTask Params AsyncTask –Params : Background 작업에 필요한 파라메타 –Progress : 작업 진행표시에 사용되는 Data Type –Result : 작업 결과로 리턴 할 데이터 타입 11 private class HttpAsyncTask extends AsyncTask { @Override protected String doInBackground(String... params) { return null } @Override protected void onPostExecute(String result) { } @Override protected void onPreExecute() { } @Override protected void onProgressUpdate(Integer... values) { }
12
AsyncTask 를 이용한 HttpClient 12 private class HttpAsyncTask extends AsyncTask { @Override protected String doInBackground(String... params) { // TODO Auto-generated method stub BufferedReader in = null; StringBuffer sb = new StringBuffer(""); Log.d("HTTP", "Request"); try{ … } catch(Exception e) { } finally { … } return sb.toString(); } @Override protected void onPostExecute(String result) { // TODO Auto-generated method stub tvText.setText(result); ParseJson(result); } @Override protected void onPreExecute() { // TODO Auto-generated method stub super.onPreExecute(); } @Override protected void onProgressUpdate(Integer... values) { // TODO Auto-generated method stub super.onProgressUpdate(values); }
13
실습 1: Http 연결 Http Client 로 연결하기 –Thread 사용 –Async Task 사용 13
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.