이것을 사용하는 용도가 뭐냐면??

-> 실제 "버스앱", "택배앱" 등등들이 웹페이지에 있는 정보들을 읽어와서 파싱을 합니다.

안에 있는 Data 가지고 자기한테 필요한 Data만 끄집어 낸다..

예를 들어 "버스앱"이라고 하면 버스시간표만 빼서 화면에 보여줄 수가 있다.,

 

 

 

1. -결과-

 

 

 

2. -xml-

 

 

 

3. -java코드-

HttpClient 등등 Http 사용되는 라이브러리 추가 해줘야함

repositories {

    mavenCentral()

}


dependencies {

    compile group: 'cz.msebera.android' , name: 'httpclient' , version: '4.4.1.1'

}

그런 다음에 코딩 ㄱ

 

 

 

4.. 퍼미션 넣어주고

 

 

 

 

 

5. 사용한 java 코드

import cz.msebera.android.httpclient.HttpResponse;
import cz.msebera.android.httpclient.client.HttpClient;
import cz.msebera.android.httpclient.client.methods.HttpGet;
import cz.msebera.android.httpclient.impl.client.DefaultHttpClient;

public class Two extends AppCompatActivity {
    EditText edt1;
    Button btn1;

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

        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 비동기 AsyncTask 상속한 클래스
                // 해당 URL의 데이터를 얻는다
                new HtmlLoadingTask().execute("https://hijjang2.tistory.com/26");
            }
        });
    }


    private String getStringFromUrl(String url) throws UnsupportedEncodingException{
        // 입력스트림을 "UTF-8"를 사용해서 읽은 후, 이를 사용해서
        // 라인 단위로 데이터를 읽을 수 있는 BufferedReader를 생성한다
        BufferedReader bfr = new BufferedReader(new InputStreamReader(getInputStreamFromUrl(url),"UTF-8"));

        // 읽은 데이터를 저장할 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 HtmlLoadingTask extends AsyncTask<String, Void, String>{
        @Override
        protected String doInBackground(String... strings) {
            String rs =null;
            try{
                rs = getStringFromUrl(strings[0]);
            }catch (UnsupportedEncodingException e){
                e.printStackTrace();
            }
            return rs;
        }

        @Override
        protected void onPostExecute(String rs) {
//            super.onPostExecute(bitmap);
            // 페이지 코드 넣어줌
            edt1.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;
    }

}