※ 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 |