이것을 사용하는 용도가 뭐냐면??
-> 실제 "버스앱", "택배앱" 등등들이 웹페이지에 있는 정보들을 읽어와서 파싱을 합니다.
안에 있는 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;
}
}
'■ Android > Tip' 카테고리의 다른 글
[Android] List - (4)채팅 틀 구현 (0) | 2020.04.23 |
---|---|
[Android] 네트워크(1) - 사용예 (3.인터넷의 JSON 데이터 읽기) (0) | 2020.04.08 |
[Android] 네트워크(1) - 사용예 (1.웹 서버의 이미지 가져오기) (0) | 2020.04.07 |
[Android] 파일(File) 클래스 - 종류 (0) | 2020.04.06 |
[JAVA][Android] 람다식 (0) | 2020.04.01 |