본문 바로가기

플밍 is 뭔들/안드로이드_인강

18-1. 네트워크

※ HttpURLConnection
 - url을 통해 데이터를 읽어온다.
 - 메인스레드가 아닌 별도의 스레드를 만들어 그 부분에서 데이터 다운로드가 작동되도록 한다.
   메인스레드에서는 사용자와의 교감을 지속적으로 해줘야함.  
 - URL 객체를 만들고 URL Connection을 만들어 인터넷에 연결한다. 
 - Stream을 통하여 이미지, 문자열을 받아온다.

MainActivity
public class MainActivity extends Activity {
      
      String urlAddr = "http://www.sba.seoul.kr";
      Button btn;
      
      @Override
      protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);   
            
            btn = (Button) findViewById(R.id.button1);
            btn.setOnClickListener(onclick);
      }
      
      OnClickListener onclick = new OnClickListener() {
            
            @Override
            public void onClick(View v) {
                  // TODO Auto-generated method stub
                  NetWorkAsyncTask netWorkAsyncTask = new NetWorkAsyncTask(MainActivity.this,urlAddr );
                  netWorkAsyncTask.execute(100);
                  
            }
      };
      
}

NetWorkAsyncTask
public class NetWorkAsyncTask extends AsyncTask<Integer, String, Integer>{
      Context mContext = null;
      String mAddr;
      ProgressDialog dialog = null;
      
      public NetWorkAsyncTask(Context context, String addr){
            mContext = context;
            mAddr = addr;
      }
      
      @Override
      protected void onPreExecute() {
            dialog = new ProgressDialog(mContext);
            dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
            dialog.setTitle("Dialog");
            dialog.setMessage("Down");
            dialog.show();
      }
      
      @Override
      protected Integer doInBackground(Integer... params) {
            // TODO Auto-generated method stub
            
            StringBuffer sb = new StringBuffer();
            InputStream is = null;
            InputStreamReader isr = null;
            BufferedReader br = null;
            
            try {
                  //url 객체 생성
                  URL url = new URL(mAddr);
                  //커낵션 객체 구하기
                  HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                  //커낵션 객체가 url에 접속하는데 기다리는 시간, 10초동안 접속이 안되면 exception으로 넘어감
                  connection.setConnectTimeout(10000);
                  
                  //if문 조건 - http로 통신이 되는 상태를 나타낸다.
                  if(connection.getResponseCode() == HttpURLConnection.HTTP_OK){
                        is = connection.getInputStream();
                        isr = new InputStreamReader(is);
                        br = new BufferedReader(isr);
                        
                        while(true){
                              String strLine = br.readLine();
                              if(strLine == null){
                                    break;
                              }
                              sb.append(strLine + "\n");
                        }
                        
                        //sb에 저장된 텍스트를 처리한다.
                  }
                  
            } catch (Exception e) {
                  // TODO: handle exception
                  e.printStackTrace();
            }
            return null;
      }
      
      
      @Override
      protected void onProgressUpdate(String... values) {
            // TODO Auto-generated method stub
            super.onProgressUpdate(values);
      }
      
      @Override
      protected void onPostExecute(Integer result) {
            // TODO Auto-generated method stub
            dialog.dismiss();
      }
      
      @Override
      protected void onCancelled() {
            // TODO Auto-generated method stub
            super.onCancelled();
      }
}

※ 

'플밍 is 뭔들 > 안드로이드_인강' 카테고리의 다른 글

19-1. 마켓  (0) 2016.11.28
17-1. 맵  (0) 2016.11.28
16-1. 데이터 베이스  (0) 2016.11.28
15-1. 데이터  (0) 2016.11.28
14-1. 브로드캐스트 리시버  (0) 2016.11.28