Presentation is loading. Please wait.

Presentation is loading. Please wait.

UNIT 30 네트워크 전송 2 로봇 SW 콘텐츠 교육원 조용수.

Similar presentations


Presentation on theme: "UNIT 30 네트워크 전송 2 로봇 SW 콘텐츠 교육원 조용수."— Presentation transcript:

1 UNIT 30 네트워크 전송 2 로봇 SW 콘텐츠 교육원 조용수

2 학습 목표 Http Parameter 추가 JSON Object

3 Http 전송 방식 Http 정보 전달 방식 GET POST 주소 줄 뒤쪽으로 전달 파라메타가 연결되는 타입
전달 길이가 제한되어 , 많은 양의 데이터 전송이 어려움. 주소가 String 으로 전달되어 전달 파라메타가 노출됨. POST 포함되는 파라메타가 Body 에 포함되어 전달됨. 다량의 데이터 전송이 가능. 주소에 데이터가 노출되지 않음

4 HTTP GET parameter 추가 private class HttpAsyncTask extends AsyncTask<String, Integer, String> { @Override protected String doInBackground(String... params) { // TODO Auto-generated method stub BufferedReader in = null; StringBuffer sb = new StringBuffer(""); Log.d("HTTP", "Request"); try { List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(3); HttpClient client = new DefaultHttpClient(); /** * Http GET Examples */ nameValuePairs.add(new BasicNameValuePair("user_name", "Name")); nameValuePairs.add(new BasicNameValuePair("pass", "Password")); nameValuePairs.add(new BasicNameValuePair("user_ ", " ")); String paramString = URLEncodedUtils.format(nameValuePairs, "utf-8"); if(!params[0].endsWith("?")){ params[0] += "?"; } Log.d("HTTP" , "GET URL: " + params[0] + paramString); HttpGet request = new HttpGet(params[0] + paramString); HttpResponse response = client.execute(request); …

5 HTTP POST parameter 추가 private class HttpAsyncTask extends AsyncTask<String, Integer, String> { @Override protected String doInBackground(String... params) { // TODO Auto-generated method stub BufferedReader in = null; StringBuffer sb = new StringBuffer(""); Log.d("HTTP", "Request"); try { List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(3); HttpClient client = new DefaultHttpClient(); /** * HTTP POST Examples */ HttpPost httppost = new HttpPost(params[0]); nameValuePairs.add(new BasicNameValuePair("user_name", "Name")); nameValuePairs.add(new BasicNameValuePair("pass", "Password")); nameValuePairs.add(new BasicNameValuePair("user_ ", " ")); httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); HttpResponse response = client.execute(httppost); … return sb.toString(); }

6 JSON Java Script Object Notation 경량의 Data 교환 형식
Name/value 쌍으로 되어 있으며, { } 로 데이터를 구성한다. 생성이 용이하고 , 다수의 언어에서 라이브러리를 제공하므로 쉽게 사용 가능하다. { "APP":"TEST_JSON", "USER":[ { "이름": "테스트01","나이": 25, "성별": "여"}, { "이름": "테스트02","나이": 20, "성별": "남"} ] }

7 JSONObject <JSONArray 클래스> Object get (int index)
int getInt (int index) String getString int index) boolean getBoolean (int index) JSONArray getJSONArray (int index) JSONObject getJSONObject (int index) <JSONObject 클래스> Object get (String key) int getInt (String key) String getString (String key) boolean getBoolean (String key) JSONArray getJSONArray (String key) JSONObject getJSONObject (String key)

8 JSONObject // JSON Object 생성 및 값 입력 JSONObject obj = new JSONObject();
obj.put("이름","덩치"); obj.put("거주지","서울"); // key 에 해당하는 Value 추출 String data = obj.get("key"); // JSON형태의 String을 JSONobject String data = "{\"이름\":\"덩치\",\"거주지\":\"서울\"}"; JSONObject obj = new JSONObject(data);

9 JSON Array <example 1> String Json = "[8, 9, 6, 2, 9]"; try{
int sum = 0; JSONArray ja = new JSONArray(Json); for (int i = 0; i < ja.length(); i++){ sum += ja.getInt(i); } }catch (JSONException e){ ;}

10 JSONObject Array <example 2> String Json = "[
{\"Product\" : \"Mouse\", \"Maker\":\"Samsung\", \"Price\":23000}," + "{\"Product\" : \"KeyBoard\", \"Maker\":\"LG\", \"Price\":12000}," "{\"Product\":\"HDD\", \"Maker\":\"Western Digital\", \"Price\":156000}]"; try{ String result = ""; JSONArray ja = new JSONArray(Json); for (int i = 0; i < ja.length(); i++){ JSONObject order = ja.getJSONObject(i); result += "product: " + order.getString("Product") + ", maker: " + order.getString("Maker") + ", price: " + order.getInt("Price") + "\n"; } }catch (JSONException e){ ;}

11 JSON Parsing private void ParseJson(String result) { try {
JSONObject json = new JSONObject(result); String appName = json.getString("APP"); Log.d("TEST_JSON", "APP Name:" + appName); JSONArray nameArray = json.getJSONArray("USER"); for (int i = 0; i < nameArray.length(); i++) { JSONObject userInfo = nameArray.getJSONObject(i); Log.d("TEST_JSON", "USER Name:" + userInfo.getString("이름")); Log.d("TEST_JSON", "USER Years:" + userInfo.getInt("나이")); } } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace();

12 실습 1: Http 연결 Http Client 로 연결하기 Test.json 가져오기

13 User Info JSON 데이터를 저장할 Class { "APP":"TEST_JSON", "USER":[
"이름": "테스트01", "나이": 25, "성별": "여", "주소": "서울특별시 양천구 목동", "특기": ["농구", "야구"], "가족관계": {"#": 2, "아버지": "홍판서", "어머니": "춘섬"}, "회사": "경기 안양시 만안구 안양7동" } ] class User_Info { public String name; public Integer year; public String gender; public String address; public ArrayList<String> hobby; public HashMap<String, String> family; public String company;

14 User Info class User_Info { public String name; public Integer year;
public String gender; public String address; public ArrayList<String> hobby; public HashMap<String, String> family; public String company; public User_Info() { hobby = new ArrayList<String>(); family = new HashMap<String, String>(); } public ArrayList<String> getHobby() { return hobby; public void setHobby(String hobby) { this.hobby.add(hobby); public String getFamily(String key) { return family.get(key); public void setFamily (String key, String value) { family.put(key, value); };

15 User Info ArrayList<User_Info> alUserInfo = new ArrayList<MainActivity.User_Info>(); private User_Info setUserInfo(JSONObject json) { User_Info user = new User_Info(); try { user.name = json.getString("이름"); user.year = json.getInt("나이"); user.gender = json.getString("성별"); user.address = json.getString("주소"); JSONArray jaHobby = json.getJSONArray("특기"); for(int i = 0; i < jaHobby.length(); i++) { user.hobby.add(jaHobby.getString(i)); } JSONObject family = json.getJSONObject("가족관계"); user.family.put("#", ""+family.getInt("#")); user.family.put("아버지", ""+family.getString("아버지")); user.family.put("어머니", ""+family.getString("어머니")); user.company = json.getString("회사"); Log.d("MainActivity", "setUserInfo " + user.toString()); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); Log.d("MainActivity", "Exception!!!"); return user;

16 User Info Parsing private void ParseJson(String result) { try {
JSONObject json = new JSONObject(result); String appName = json.getString("APP"); JSONArray nameArray = json.getJSONArray("USER"); Log.d("TEST_JSON", "APP Name:" + appName + " Length:" + nameArray.length()); for (int i = 0; i < nameArray.length(); i++) { JSONObject userInfo = nameArray.getJSONObject(i); alUserInfo.add(setUserInfo(userInfo)); } } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace();

17 실습 1: Http 연결 User Info 를 ListView 로 표현


Download ppt "UNIT 30 네트워크 전송 2 로봇 SW 콘텐츠 교육원 조용수."

Similar presentations


Ads by Google