Louie NRT Story

[안드로이드] Okhttp 본문

전기차충전기

[안드로이드] Okhttp

hyeok0724.kim@gmail.com 2022. 1. 12. 11:38
반응형

작성일: 22년 1월 12일

 

 

Index

1. Module 설정

2. 분석하고자 하는 데이터

3. Weather

4. MainActivity

 

 

1. Module 설정

 - Okhttp 깃허브에 들어가서 최신 버전이 무엇인지 확인함

 - Gradle 모듈에 아래와 같이 추가를 함

 

 

2. 분석하고자 하는 데이터

 - 현재는 서버가 동작을 제대로 안하고 있지만 받고자 하는 데이터는 아래와 같음

 

 

3. Weather

 - Weather 이름의 Model Class를 만듬

public class Weather {
    private String country;
    private String weather;
    private String temperature;

    public Weather(String country, String weather, String temperature) {
        this.country = country;
        this.weather = weather;
        this.temperature = temperature;
    }

    public String getCountry() {
        return country;
    }

    public void setCountry(String country) {
        this.country = country;
    }

    public String getWeather() {
        return weather;
    }

    public void setWeather(String weather) {
        this.weather = weather;
    }

    public String getTemperature() {
        return temperature;
    }

    public void setTemperature(String temperature) {
        this.temperature = temperature;
    }

    @Override
    public String toString() {
        return "Weather{" +
                "country='" + country + '\'' +
                ", weather='" + weather + '\'' +
                ", temperature='" + temperature + '\'' +
                '}';
    }
}

 

 

4. MainActivity

 - JSON 형태의 데이터를 Weather 모델에 넣고 그것들을 List에 담아둠

public class MainActivity extends AppCompatActivity {
    private static final String LOG_TAG = MainActivity.class.getSimpleName();

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

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

    private static class HttpAsyncTask extends AsyncTask<String, Void, String> {

        OkHttpClient client = new OkHttpClient();

        @Override
        protected String doInBackground(String... params) {
            List<Weather> weatherList = new ArrayList<>();
            String result = null;

            //첫번째 파라미터로 URL 정보를 받음
            String strUrl = params[0];
            try {
                Request request = new Request.Builder()
                        .url(strUrl)
                        .build();

                Response response = client.newCall(request).execute();

                JSONArray jsonArray = new JSONArray(response.body().string());

                for (int i = 0; i < jsonArray.length(); i++){
                    JSONObject jsonObject = jsonArray.getJSONObject(i);
                    String country = jsonObject.getString("country");
                    String weather = jsonObject.getString("weather");
                    String temperature = jsonObject.getString("temperature");
                    Weather w = new Weather(country, weather, temperature);
                    weatherList.add(w);
                }
                Log.d(LOG_TAG, "doInBackground: " + weatherList.toString());

            } catch (IOException | JSONException e) {
                e.printStackTrace();
            }
            return result;
        }

        @Override
        protected void onPostExecute(String s){
            super.onPostExecute(s);
            if (s != null){
                Log.d(LOG_TAG, s);
            }
        }
    }
}

 

 

Referece:

https://youtu.be/oQKYII__vxc

 

반응형
Comments