용오름체험휴양마을영농조합법인 / 홍천 용오름캠핑장 팸투어 다녀왔어요.

용오름체험휴양마을영농조합법인 / 홍천 용오름캠핑장 팸투어 다녀왔어요. 강원도 홍천 서석면에 위치해있으며 1급수 용오름계곡 바로 옆에 있습니다.홍천군 1등 마을로 마을에서 직접 관리하는 용오름캠핑장,펜션 10개를 운영하고 있으며 각종 모임이 가능하도록 식당,회의실,야외무대가 설치되어 있습니다.홍천군 1등 마을답게 캠핑장,펜션 마을 전지역 wi-fi 사용이 가능하며 매년 봄 팸투어 실시, 여름엔 마을에서 재배한 홉으로 직접만든 맥주축제,마리소리 음악축제 를 열고 있습니다.계곡의 경우 수심이 다양하여 다이빙 포인트가 2곳이 있으며 아이들이 안전하게 물놀이를 할 수 있는 곳도 여러 곳 있습니다. 홍천 용오름캠핑장 팸투어 다녀왔어요. 요즘은 농산촌체험마을에서 캠핑과 여러프로그램을 같이 하는 곳이 추세더라고요. 아미산이 둘러쌓인 청정계곡이 흐르는 아름다운 용오름체험휴양마을 에서 운영하는 홍천 용오름캠핑장 팸투어 다녀왔어요. 테크 앞 강이... 붕어빵 가족의 담너머 세상구경 https://m.blog.naver.com/1092119/220711235599 가을여행-홍천여행- 홍천 용오름 마을 첫째날 여행의 계절 가을입니다. 요즘 저희는 강원도에 꽃힌 상태인지라...카페 행복한 이티씨와 함께하는 홍천 용오름 마을 1박2일 체험에 참가를 하였답니다! 평소 체험 시간보다 조금 늦은 출발을 해서 차가 밀리지 않으려나... 귀여운 단지 https://m.blog.naver.com/sanguidan/50181593653 용오름마을 캠핑장 여름휴가의 시즌이다.. 강원도의 계곡과 시원함을 만끽하기 위해 캠핑장을 검색하다 우연히 알게 된 홍천의 용오름 캠핑장.. 성수기라 캠핑장 요금들이 사악하다 용오름캠핑장 옆엔 해미르 캠핑장이 있는데... ★살로몬의 잇츠캠핑★ https://m.blog.naver.com/freeguy9040/20163628934 맥주효모로 만든 용오름맥주마을 바쏘 맥주샴푸와 맥주마스크팩... 1988년까지 맥주 원료인...

Maria DB ↔ PHP ↔ Android 연동하기 - 4. JSON 파싱하기

Maria DB ↔ PHP ↔ Android 연동하기 - 4. JSON 파싱하기

Maria DB ↔ PHP ↔ Android 연동하기 - 3. 외부 접속 설정하기 를 안 보셨다면 먼저 보시는 것을 추천드립니다.

전 포스팅에서 로컬에 있는 php 파일을 외부에서 접근할 수 있게 해 주었습니다. 이제 이 php 파일에 있는 JSON을 파싱 해서 사용하겠습니다.

먼저 인터넷을 사용해야 하기 때문에 Manifest.xml에 인터넷 사용허가 코드를 넣어줘야 합니다.

추가로 안드로이드 Pi 버전이상을 사용 중이라면 application 태그 안에 androidandroid:usesCleartextTraffic="true"도 추가해줘야 합니다.

추가하지 않으면 ava.io.IOException: Cleartext HTTP traffic to not permitted 에러가 발생하게 됩니다.

파싱 한 값을 저장할 클래스를 하나 만들어줍니다.

public class Tree { String name; // 이름 String category; // 카테고리 String keyword; // 키워드 ... public String getName() { return name; } public void setName(String name) { this.name = name; } public String getCategory() { return category; } public void setCategory(String category) { this.category = category; } public String getKeyword() { return keyword; } public void setKeyword(String keyword) { this.keyword = keyword; } ... }

get과 set은 일일이 입력하는 것보다 변수를 입력하고 드래그 후 Alt + Insert를 눌러 Getter and Setter를 눌러주고 추가를 해줍니다.

activity_main.xml에는 간단하게 TextView만 넣어주었습니다.

MainActivity.java에는 AsyncTask를 사용합니다.

package com.example.treemanagement; import android.content.pm.ActivityInfo; import android.os.AsyncTask; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.widget.TextView; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.util.ArrayList; public class MainActivity extends AppCompatActivity { private TextView textView; private String jsonString; ArrayList treeArrayList; // 나무정보들을 저장할 ArrayList @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView) findViewById(R.id.textView); JsonParse jsonParse = new JsonParse(); // AsyncTask 생성 jsonParse.execute("http://아이피주소:포트번호/php명.php"); // AsyncTask 실행 } public class JsonParse extends AsyncTask { String TAG = "JsonParseTest"; @Override protected String doInBackground(String... strings) { // execute의 매개변수를 받아와서 사용 String url = strings[0]; try { URL serverURL = new URL(url); HttpURLConnection httpURLConnection = (HttpURLConnection) serverURL.openConnection(); httpURLConnection.setReadTimeout(5000); httpURLConnection.setConnectTimeout(5000); httpURLConnection.connect(); int responseStatusCode = httpURLConnection.getResponseCode(); InputStream inputStream; if(responseStatusCode == HttpURLConnection.HTTP_OK) { inputStream = httpURLConnection.getInputStream(); } else{ inputStream = httpURLConnection.getErrorStream(); } InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "UTF-8"); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); StringBuilder sb = new StringBuilder(); String line; while((line = bufferedReader.readLine()) != null){ sb.append(line); } bufferedReader.close(); Log.d(TAG, sb.toString().trim()); return sb.toString().trim(); // 받아온 JSON의 공백을 제거 } catch (Exception e) { Log.d(TAG, "InsertData: Error ", e); String errorString = e.toString(); return null; } } @Override protected void onPostExecute(String fromdoInBackgroundString) { // doInBackgroundString에서 return한 값을 받음 super.onPostExecute(fromdoInBackgroundString); if(fromdoInBackgroundString == null) textView.setText("error"); else { jsonString = fromdoInBackgroundString; treeArrayList = doParse(); Log.d(TAG,treeArrayList.get(0).getName()); textView.setText(treeArrayList.get(0).getName()); } } @Override protected void onPreExecute() { super.onPreExecute(); } @Override protected void onProgressUpdate(Void... values) { super.onProgressUpdate(values); } private ArrayList doParse() { ArrayList tmpTreeArray = new ArrayList(); try { JSONObject jsonObject = new JSONObject(jsonString); JSONArray jsonArray = jsonObject.getJSONArray("Tree"); for(int i=0;i

로그를 확인해보면 제대로 받아와 지는 것을 확인할 수 있습니다.

from http://1d1cblog.tistory.com/133 by ccl(A) rewrite - 2020-03-23 01:20:09

댓글

이 블로그의 인기 게시물

[2020 정보처리기사 실기 - 프로그래밍 언어 활용] 2. 언어 특성 활용...

[PHP] 네이버 Cloud Outbound Mailer API 파일 첨부하기

동적 메모리 할당_현재까지 내가 이해한 내용