-퍼미션 넣어주고-
-설명-
-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;
}
}
'■ Android > Tip' 카테고리의 다른 글
[Android] Export 방법(내보내기) (0) | 2020.04.24 |
---|---|
[Android] List - (4)채팅 틀 구현 (0) | 2020.04.23 |
[Android] 네트워크(1) - 사용예 (2.인터넷에 있는 HTML소스 내용을 그대로 읽는거) (0) | 2020.04.08 |
[Android] 네트워크(1) - 사용예 (1.웹 서버의 이미지 가져오기) (0) | 2020.04.07 |
[Android] 파일(File) 클래스 - 종류 (0) | 2020.04.06 |