자바에서 제공하는 HttpURLConnection 클래스를 사용하여
특정사이트의 값을 GET 방식으로 가져오는 예제이다.
HttpURLConnection 는 HTTP/1.1 통신방식으로 하나의 연결당 하나의 요청과 응답만 허용하기에 서버 입장에서는 심각한 자원리소스 오류를 경험할 수 있다.
그렇기에 2015년 표준이된 HTTP/2 가 나왔고 그를 지원하는 OkHttp 라이브러리가 생겨났다.
오늘은 1.1 방식의 코드를 남겨본다.
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new HttpAsyncTask().execute("https://m.naver.com");
}
private static class HttpAsyncTask extends AsyncTask<String,Void,String>{
@Override
protected String doInBackground(String... strings) {
String result = null;
String strUrl = strings[0];
try {
//URL 객체생성
URL url = new URL(strUrl);
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
connection.setRequestMethod("GET");
connection.setDoOutput(true);
connection.setDoInput(true);
connection.setUseCaches(true);
connection.setDefaultUseCaches(true);
//문자열 저장 객체
StringBuffer builder = new StringBuffer();
BufferedReader reader = new BufferedReader(
new InputStreamReader(connection.getInputStream()));
String line = null;
while((line = reader.readLine()) != null){
builder.append(line+"\n");
}
result = builder.toString();
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
if(s != null){
Log.d("NET_TEST",s);
}
}
}
}
위 코드를 실행하면, 네이버 로 부터 GET 방식으로 얻어온 태그 데이터를 Logcat 창에 프린트 해준다.
안드로이드 특성한 Main Thread 가 아닌 작업 Thread 에서 네트워크 동작을 구현하고 있다.
감사합니다.
https://soo0100.tistory.com/1711
반응형
'앱 만들기 > 안드로이드 study' 카테고리의 다른 글
스크롤 뷰 만들기 와 주의사항 (4) | 2022.01.27 |
---|---|
HTTP 2.0 OkHttpClient 로 네트워크 구현. (2) | 2022.01.23 |
안드로이드 클릭리스너를 구현하는 방법 (5) | 2021.10.27 |
인텐트를 이용해 값 전달하기. (2) | 2021.10.14 |
안드로이드 9 patch (나인패치) 예제 만들어보기 (2) | 2021.09.23 |
댓글