앱 만들기/안드로이드

HTTP 2.0 OkHttpClient 로 네트워크 구현.

나도 처음이야 2022. 1. 23.

https://soo0100.tistory.com/1710

 

안드로이드 HttpURLConnection 사용하여 네트워크 연결

자바에서 제공하는 HttpURLConnection 클래스를 사용하여 특정사이트의 값을 GET 방식으로 가져오는 예제이다. HttpURLConnection 는 HTTP/1.1 통신방식으로 하나의 연결당 하나의 요청과 응답만 허용하기에

soo0100.tistory.com

 

지난 시간 HttpURLConnection 를 이용하여 네트워크 태크 정보를 읽어왔다.

하지만 1개의 서버와 클라이언트가 매치가 되어야 하는 문제점이 있어왔기에 2015년 표준으로 재정된 HTTP2.0 방식을 사용하는 것을 추천하고 있다.

오늘은 HTTP 2.0 방식이 적용된 소스 코드로, 지난 시간과 동일한 태그 값을 불러오는 내용이다.

 

1. 구현전 manifests 파일에 네트워크 사용을 위해서 Internet 권한을 설정한다.

<uses-permission android:name="android.permission.INTERNET"/>

 

2. 모듈단 gradle 파일에 외부 라이브러리 사용을 위해서 하기 코드를 추가한다.

implementation 'com.squareup.okhttp3:okhttp:3.8.1'

3. 소스 구현

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        new HttpAsynTask().execute("https://goo.gl/eIXu9l");
    }

    private static class HttpAsynTask extends AsyncTask<String, Void, String>{
        //Http/2.0
        OkHttpClient client = new OkHttpClient();

        @Override
        protected String doInBackground(String... strings) {
            String result = null;
            String url = strings[0];

            try {
            Request request = new Request.Builder()
                    .url(url).build();
           Response response = client.newCall(request).execute();
           result = response.body().string();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return result;
        }

        protected void onPostExecute(String s) {
            super.onPreExecute();
            if(s != null){
                Log.d("NET_TEST", s);
            }
        }
    }
}

위 코드를 적용하면, 서버의 태그 내용을 가져온다. 

테스트 서버는 "오준석의 될때까지 안드로이드" Json 테스트 파일 내용이다.

감사합니다.

 

반응형

댓글