-퍼미션 넣어주고-

 

 

-설명-

 

 

 

-java-

 

public class Two extends AppCompatActivity {
    TextView textv1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.two);
        textv1 = findViewById(R.id.textv1);

        // 비동기 AsyncTask 상속한 클래스
        // 해당 URL의 데이터를 얻는다
        new JsonLoadingTask().execute();
    }

    // JSON 데이터를 읽는다
    public String getJsonText(){
        StringBuffer sb = new StringBuffer();
        try{
            String rsline = getStringFromUrl("http://www.~~~~~");

            // 인터넷에서 읽어온 데이터로 JSON 객체 생성
            JSONObject object = new JSONObject(rsline);

            sb.append("이름:").append(object.getString("이름")).append("\n");
            sb.append("나이:").append(object.getInt("나이")).append("\n");
            sb.append("성별:").append(object.getString("성별")).append("\n");
            sb.append("결혼:").append(object.getBoolean("결혼")).append("\n");

            // 취미는 배열로 구성되어 있으므로 JSON 배열로 생성
            sb.append("취미:");
            JSONArray hobbyArray = new JSONArray(object.getString("취미"));

            for(int i=0; i<hobbyArray.length(); i++){
                sb.append(hobbyArray.getString(i)).append(",");
            }
            sb.append("\n");

            sb.append("주소:").append(object.getString("주소")).append("\n");

            // 가족 데이터는 내부 JSON이므로 JSON 객체 생성
            sb.append("가족:");
            JSONObject familyObject = new JSONObject(object.getString("가족"));
            sb.append(familyObject.getString("아버지")).append(",");
            sb.append(familyObject.getString("어머니"));

        }catch (IOException e){
            e.printStackTrace();
        }catch (JSONException e){
            e.printStackTrace();
        }
        return sb.toString();
    }

    // 주어진 URL의 페이지를 문자열로 얻는다
    private String getStringFromUrl(String url) throws UnsupportedEncodingException{
        // 입력스트림을 "UTF-8"를 사용해서 읽은 후, 이를 사용해서
        // 라인 단위로 데이터를 읽을 수 있는 BufferedReader를 생성한다
        BufferedReader bfr = new BufferedReader(new InputStreamReader(getInputStreamFromUrl(url),"euc-kr"));

        // 읽은 데이터를 저장할 StringBuffer를 생성한다
        StringBuffer sb = new StringBuffer();

        try{
            String rsline = null;
            while ((rsline = bfr.readLine())!=null){
                sb.append(rsline);
            }
        }catch (IOException e){
            e.printStackTrace();
        }
        return sb.toString();
    }


    private class JsonLoadingTask extends AsyncTask<String, Void, String>{
        @Override
        protected String doInBackground(String... strings) {
            return getJsonText();
        }

        @Override
        protected void onPostExecute(String rs) {
//            super.onPostExecute(bitmap);
            textv1.setText(rs);
        }
    }

    // 주어진 URL에 대한 입력 스트림(InputStream)을 얻는다
    // 실제 읽는거
    public static InputStream getInputStreamFromUrl(String url){
        InputStream contentStream = null;
        try{
            // HttpClient클래스를 사용해서 주어진 URL에 대한 모든 문자열들을 읽어올수 있다.
            HttpClient httpClient = new DefaultHttpClient(); //1.객체생성
            HttpResponse response = httpClient.execute(new HttpGet(url)); //2.url지정
            contentStream = response.getEntity().getContent(); //3.내용 가져오는 부분( 내용만 필요 하니깐)
        }catch (Exception e){
            e.printStackTrace();
        }
        return contentStream;
    }

}