2013. 3. 14. 11:45

'2019년 이전 정리 > 모바일 정보' 카테고리의 다른 글

OAuth 란  (0) 2013.12.12
phone gap 앱개발  (0) 2013.03.29
WPS(Wi-Fi Positioning System)의 기술요소  (0) 2013.03.06
MVNO 소개  (0) 2012.08.27
MIME TYPE 개념  (0) 2012.08.27
Posted by hoonihoon
2013. 3. 6. 16:34

출저 : http://www.mobizen.pe.kr/724

Wifi로 들어오는 무선 ap의 정보를 이용해서 위치값을 얻어내는서비스

기술요소

- 무선 AP 정보를 얻어내는 기술

- 얻어낸 data를 최적화하여 database를 구축하는 기술

- 사용자 모바일 디바이스에서 필요한 정보를 얻어내는기술

- 얻어낸 무선 AP 정보와 구축된 database내의 정보를 비교하여 위치를 얻어내는 기술



1. WPS란?

IT용어 중에 WPS를 찾아보면 Web Processing Service, Welding Procedure Specification, Wi-Fi Protected Setup 등 다양한 용어가 검색이 된다. 이번 포스팅에서 소개할 WPS(Wi-Fi Positioning System)는 이중에서 Wi-Fi로 들어오는 무선 AP의 정보를 이용해서 위치값을 얻어내는 서비스이다. 

WPS가 일반인들에게 인식되기 시작한 것은 iPhone에서 해당 솔루션을 기본으로 탑재하면서부터이다. 이를 통하여 GPS나 이통사 LBS의 이용이 불가능한 iPod Touch에서도 위치를 얻어낼 수 있게 되었다. iPhone에 내장되어 있는 WPS는 'Skyhook Wireless' 의 제품이다.  위키피디아에서 'Wi-Fi Positioning System'으로 검색하면 'Skyhook Wireless'으로 redirect를 해줄만큼 이 회사는 WPS에서 중요한 존재이다. WPS라는 용어를 가장 먼저 사용했으며, 시장에서 가장 선두에 있는 기업이기도 하다.

사용자 삽입 이미지


2. WPS의 기술요소

WPS는 크게 무선 AP 정보를 얻어내는 기술, 얻어낸 Data를 최적화하여 Database를 구축하는 기술, 사용자의 모바일 디바이스에서 필요한 정보를 얻어내는 기술, 얻어낸 무선 AP 정보와 구축된 Database내의 정보를 비교하여 위치를 얻어내는 기술 등으로 구성되어 있다. Skyhook Wireless를 비롯하여 Sony, 국내외 네트워크 사업자들이 구성 기술들에게 다양한 특허를 걸어 놓았다.


2.1.무선 AP 정보를 얻어내는 기술

흔히 솔루션 사업자들은 스캐닝 차량 등을 통해 무선 AP의 정보를 얻어낸다. 이때 얻어내는 정보는 SSID, MAC Address, Channel, Signal Strength, Noise Strength 등 매우 다양하다. 이러한 정보를 GPS가 내장된 디바이스를 통해 위치값과 함께 수집한다. 아래는 'Skyhook Wireless'가 특허 공개한 '위치 표지 데이터베이스와 서버, 위치 표지 데이터베이스구축 방법 및 이것을 이용한 위치 기반 서비스(공개번호 : 10-2007-0120085)'의 일부분이다.

사용자 삽입 이미지

2.2.얻어낸 Data를 최적화하여 Database를 구축하는 기술

대부분의 서비스들은 위치 정보를 Key로 해서 AP의 정보를 가지는 것은 아니고, AP를 Key로 Database를 구축한다. WPS는 스캐닝 차량등을 통해 들어오는 다양한 정보(이동함에 따라 변하는 신호강도 등)를 조합해서 AP의 위치를 추정한다. AP의 정보외에 Tagging, Height 값 등 다양한 정보가 같이 Database에 쌓이게 되는데, AP의 위치를 계산하는 알고리즘이나 기타 정보들은 서비스별로 매우 다양한다.


2.3. 사용자의 모바일 디바이스에서 필요한 정보를 얻어내는 기술

2.1.에서 얻어낸 정보의 종류에 따라 모바일 디바이스에서 얻어내야 정보가 달라진다. 하지만, 플랫폼에 따라 필요한 정보를 얻어낼 수 없을 때가 있다. 예를 들면 무선 AP의 Signal Strength와 같은 정보를 클라이언트가 설치된 플랫폼에서 제공하지 않는다면 WPS는 사용할 수 없게 된다. 불행히도 대부분의 모바일 플랫폼들이 Wi-Fi를 통해 들어오는 다양한 정보들을 접근할 수 있는 API들을 모두 제공하지는 않는다. 

그런 이유로 WPS의 기본 타겟 디바이스는 노트북이나 넷북이 되고, 대부분 브라우저 툴바 형태로 제공된다. Windows Mobile, Android등 일부 스마트폰 플랫폼에서 다양한 WPS들이 지원하고 있기는 하다. Mobile Browser의 경우는 아직까지는 iPhone Safari외에는 쉽지 않고 툴바설치가 되지 않으면 사용이 쉽지 않다. 아래는 'Skyhook Wireless'가 특허 공개한 '인터넷 검색 및 통신을 위한 위치 툴바(공개번호 : 10-2008-0087798)'의 일부분이다.

사용자 삽입 이미지


2.4. 얻어낸 무선 AP 정보와 구축된 Database내의 정보를 비교하여 위치를 얻어내는 기술

같은 위치라고 해도 AP의 정보가 항상 동일할 수가 없다. 상황에 따라서 AP의 일부분이 Power Off 되어 있는 경우도 있을테고, 한 건물내에서 이동을 했을 경우도 있고, 그날 날씨에 따라서 Noise의 강도가 달라질 수도 있는 등 다양한 변수가 있다. 이러한 변수를 고려한 복잡한 알고리즘을 거쳐서 현재 위치를 추정하게 된다.

알고리즘이 100% 정확하지는 않아서 때로는 잘못된 결과를 낼때도 있다. iPod Touch에서도 종종 강남에 있는데도 종로에 있다고 나오는 경우를 경험해 보았을 것이다. 현재 상용화 제품들은 Database에 해당 지역의 정보가 있다면 90%이상의 정확도를 가지고 있으며, 오차 범위도 실내에서는 5M, 실외에서는 10M 정도를 유지하고 있다. 아래는 'Skyhook Wireless'가 특허 공개한 '위치 확인 시스템의 연속 데이터 최적화(공개번호 : 10-2007-0118607)'의 일부분이다.

사용자 삽입 이미지


3. 주요 플레이어

현재 WPS 시장은 거의 'Skyhook Wireless'의 독주에 가깝다. 하지만 WPS를 지원하는 다른 업체들이 없는 것은 아니다. CISCOHerecastKoozyt 등 다양한 업체들이 각각의 차별화 포인트를 가지고 시장을 넓혀가고 있다.(물론 이들은 'WPS'라는 용어를 직접적으로 사용하지는 않는다.) 이들의 차별화 포인트들은 기술의 차별화보다는 응용에 있다. 서비스에 따라서 서버응용 API, 다양한 Tagging 기법, 대형 지하 쇼핑몰 지원 등 재미난 것들이 많으니 관심을 가지고 비교해보면 재미있을 것이다.



4. GPS를 보완하는 기술

'무선 Air의 보완재, WiFi'포스트에서도 언급했지만 Wi-Fi 내장 디바이스들의 수요는 갈수록 증가하고 있으며 위치 정보에 대한 필요성은 더 이상 이야기 하지 않아도 될 것이다. WPS를 이용하면 사용자의 현재 위치를 얻어내고 다양한 응용서비스에 적용할 수 있다. 하지만, GPS를 완전히 대체하는 기술로서의 접근은 조금 위험하다. GPS가 아직 가격이 높고 보급율이 낮지만 곧 가격은 하락할 것이고, A-GPS를 넘어선 DGPS가 다양한 단말에 내장될 것으로 보여진다. GPS의 특성상 실내에서는 수신율이 급격히 떨어지고 당분간은 Wi-Fi 내장 기기의 보급율보다는 적을 것이니 WPS는 위치를 얻어내기 위한 GPS와 상호 보완적인 기술로 보면 될 것이다. 

사용자 삽입 이미지
국내에서 WPS 관련 서비스는 당분간 요원할 것으로 예상된다. 응용할 수 있는 서비스가 아직까지는 부족하고, 스마트폰이나 노트북을 이동중에 즐기면서 위치 정보에 대한 Needs가 필요한 상황이 아직까지는 흔하지 않기 때문이다. 

'Skyhook Wireless' 도 국내 DB를 수도권과 부산 일부 지역만을 구축해 놓은 상황이다. 엄연히 'iPod Touch'라는 상용화 단말이 팔리는 상황에서 소비자들이 DB 구축에 대한 요구를 Apple에게 안하는 것을 보면 응용 서비스가 부족하긴 부족하나 보다. 언젠가는 국내에서도 스마트폰과 넷북의 보급율이 높아지고, 다양한 LBS가 등장하는 때가 오면 이러한 WPS가 각광받을 때가 오겠지....

'2019년 이전 정리 > 모바일 정보' 카테고리의 다른 글

phone gap 앱개발  (0) 2013.03.29
개발자에게 도움될 만한 IT 기술 블로그  (0) 2013.03.14
MVNO 소개  (0) 2012.08.27
MIME TYPE 개념  (0) 2012.08.27
모바일앱 기획 : 비지니스모델  (0) 2011.07.20
Posted by hoonihoon
2013. 1. 2. 17:31

mail 을 보내고 싶다면 해당 파일을 다룰줄 알아야 한다.


C:\Trac\BitNami Trac Stack projects\Project\conf\trac.ini


[notification]

admit_domains=

always_notify_owner=true

always_notify_reporter=true

always_notify_updater=true

ambiguous_char_width=single

batch_subject_template=$prefix Batch modify: $tickets_descr

email_sender=SmtpEmailSender

ignore_domains=

mime_encoding=base64

sendmail_path=sendmail

smtp_always_bcc=

smtp_always_cc=

smtp_default_domain=

smtp_enabled=true

smtp_from=thunkim@enkisoft.co.kr

smtp_from_author=false

smtp_from_name=

#smtp_password=***********

smtp_port=25

smtp_replyto=trac@localhost

smtp_server=mail.enkisoft.co.kr

smtp_subject_prefix=__default__

#smtp_user=thunkim@enkisoft.co.kr

ticket_subject_template=$prefix #$ticket.id: $summary

use_public_cc=false

use_short_addr=false

use_tls=false

'2019년 이전 정리 > 협업(이슈관리, 형상관리)' 카테고리의 다른 글

Android Maven 설치 하기  (0) 2013.12.12
Android Ant 빌드 하기  (0) 2013.12.12
Trac 사용법 정리 1  (0) 2013.01.02
BITNAMI  (0) 2012.12.28
Trac, CodeBeamer, Jira, Mantis 비교  (0) 2012.12.28
Posted by hoonihoon
2013. 1. 2. 17:29

Trac

 

목차

1. 트랙 정의 특징

2. 트랙 가입

사용법 (trac )

 

1. Trac

trac 이란 ?

- 웹 기반 응용 프로그램으로 구현된 가벼운 프로젝트 관리 도구, 이슈트래킹 툴

, 여러명이 하나의 소프트웨어를 개발 할 때 아이디어의 순환, 역할의 분담, 이슈관리, 수정등 프로젝트에 필요한 모든 업무를 기록하고 확인을 할 수 있는 도구입니다.

 

주요특징

- wiki page

- 티켓 시스템

- 진행상황 보기

- svn 연동

 

 

Trac Wiki page

trac을 접속하게 되면 Wiki 페이지를 볼수 있다. Wiki 란 일반적인 페이지들의 연결 집합체라고 볼수 있다. 관리자 뿐만 아니라 누구나 페이지 내용을 수정할 수 있고, 원하면 추가 할수 있다.

 





 


 


 

Trac 티켓 시스템

 

- 용도

프로젝트 작업 , 기능 요청 , 버그 리포트 , 소프트웨어 지원 등

( 버그보고, 질문, 제안, 토론 등이 쉽게 가능하다)

 

Create Ticket

 

- 사용법

1. 관리자가 Owner를 설정하여 업무내용을 만들고 티켓을 발행한다.

2. Owner 는 메일을 받고, 업무를 파악한다.

3. Owner 는 업무를 할당받고 해결한다.

4. 완료된 업무는 fixed를 설정한다.

 

-특징

1. 부득이할 경우 Owner를 재 할당 할 수 있다.

2. 모 든 티켓은 편집, 주석, 할당, 우선순위등을 언제든지 변경 가능하다.

3. 티켓 필드에는 다음과 같은 카타고리가 있다.

Summary : 검색시에 구분이 가능하도록 설정

Owner : 이슈를 할당 받을 인원 설정

Type: 버그, 문서, 개발

MileStone: 1app , 2app 버전별로 관리

Priority: 이슈의 우선순위 설정

Version: svn 의 버전과 sync

Cc: 업무를 같이 봐야할 사람 설정

 

View ticket

 

 

 

 

 

Trac 로드맵

1. 프로젝트 개발을 관리하고 계획을 도와주는 티켓시스템에 대한 뷰를 제공한다.

2. 로드맵 뷰

-티켓의 그룹을 설정가능하며, 각 그룹은 진행률이 표시된다. 줄에 표시된 티켓은 상태를 볼 수 있다. (active, closed)

 

 




 

 

Trac 검색

#이슈번호

 

Trac Time line

-히스토리를 제공하는 뷰.

-시간순으로 발생된 모든 Trac의 이벤트를 리스트형태로 보여준다.

 

 

 

'2019년 이전 정리 > 협업(이슈관리, 형상관리)' 카테고리의 다른 글

Android Maven 설치 하기  (0) 2013.12.12
Android Ant 빌드 하기  (0) 2013.12.12
Trac.ini 파일 설정  (0) 2013.01.02
BITNAMI  (0) 2012.12.28
Trac, CodeBeamer, Jira, Mantis 비교  (0) 2012.12.28
Posted by hoonihoon
2012. 12. 28. 14:26

http://bitnami.org/stacks

redmine, trac 등 환경설정을 한번에 받을 수 있는 패키지


그전에 삽질 사이트 모음(그래도 하나씩 설치하는 쾌감을 느껴보시려면 아래로)

http://goodjoon.tistory.com/35

http://369369.tistory.com/101

http://k_builder.blog.me/40139626177

'2019년 이전 정리 > 협업(이슈관리, 형상관리)' 카테고리의 다른 글

Android Maven 설치 하기  (0) 2013.12.12
Android Ant 빌드 하기  (0) 2013.12.12
Trac.ini 파일 설정  (0) 2013.01.02
Trac 사용법 정리 1  (0) 2013.01.02
Trac, CodeBeamer, Jira, Mantis 비교  (0) 2012.12.28
Posted by hoonihoon
2012. 12. 28. 14:19

복잡한 프로젝트환경을 성공적으로 수행하기 위한 필수 조건 중의 하나가 협업 시스템이라고 생각한다.

요구분석/정의 > 상위/상세설계 > 구현/시험 > 검증 > 납품 및 운영/업그레이드의 cycle을 지속적으로 유지하기 위해서는 제품/프로젝트 개발 및 운영/업그레이드를 구분한 Activity관리 및 산출물기반으로의 협업이 이뤄져야하는데, PM/개발자 및 프로젝트에 많은 영향을 미치는 stake-holder를 적절한 수준의 보안 정책으로 이에 포함시켜 activity 및 산출물을 공유하고 협업하면 그만큼 프로젝트 성공율이 높아질 뿐더러, 자연스럽게 Project-Lessons-Learned의 DB가 축적되기때문에, 이러한 협업 시스템은 필수적이라고 보여진다.

그동안 사용한 tool들을 간단히 비교/공유 하고자 한다.

Mantis (Open Source)

버그에 한정된 전형적인 Bug Tracking System으로 활용하면 Issue관리까지도 가능하나 제품 초기의 컨셉이 BTS에 한정이 되어있어서, 이슈/문서/지식/형상을 포함하는 개념까지로 확장하기가 어렵다. PHP+MySQL 조합으로 설치가 그리 어렵지 않으나 WIKI 및 Subversion과 연동시킬 경우 설정이 다소 어려움.

Trac (Open Source)

이슈(로드맵/마일스톤)+위키+형상관리(Subversion)뷰어 기능이 존재하여, 상호간에 Link 개념으로 유기적 연동이 된다 (이슈를 발생하여 이 이슈 key를 subversion커밋할 시 포함시키면 자동으로 연동되며, WIKI에서도 이슈 key를 연동할 수 있음.) 이슈, 위키의 기능들이 최소한의 기능들로 구성됨. TNF, 제로보드등에서 대표적으로 사용하고 있음. 설치가 어렵웠는데 최근 0.11로 판올림하면서 설치가 쉬워졌고, TOW등을 이용하면 편하게 사용할 수 있음. ( TOW (TracOnWindows) http://trac.tistory.com/ )

Jira (Commercial이나 Open Source 프로젝트/비영리재단은 무료)

Jira는 이슈(버전/콤포넌트)기반 추적 시스템이나 work-flow개념을 탑재하여, 다양한 형태(개발 + 운영관리)의 이슈 관리를 할 수 있고, 사용자 입맞에 맞추어 거의 모든 필드를 대상으로 통계 추출을 할 수 있음. 같은 회사에서 나오는 WIKI (Confluence) , CROWD(SSO), Fisheye(형상관리뷰어), Crucible(코드리뷰도구)의 연동이 이슈를 바탕으로 유기적으로 연결되어 있음.

* CodeBeamer (Commercial이나 5명이하 2개미만 프로젝트/Open Source 프로젝트는 무료)

이슈+WIKI+Subversion/뷰어+빌드관리+Forum/게시판까지 포함된 프로젝트 협업 관리 시스템의 종합 상자격으로 설치도 압축 풀고 실행만 하면 바로 협업시스템을 쓸 수 있을 정도로 잘 되어 있음. 2008년 Jolt Productivity 및 Software Dev. Jolt Awards 수상

약간의 주관적인 판단이긴 하지만

- 설치용이성 : CodeBeamer > Trac (TOW or Easy Install사용시) > Jira > Mantis(w WIKI/SVN)

- 관리용이성 (사용자/백업/복구) : CodeBeamer > Jira > Trac > Mantis

- IT프로젝트 활용도 : CodeBeamer > Jira > Trac > Mantis

- Customize/(쉬운)확장성: Jira > CodeBeamer > Trac > Mantis

IT/SW개발회사이고, 기본 협업시스템이 없다면 CodeBeamer 이나 Trac을 도입을 추천하고, Non-IT/일반회사일 경우 Jira (+Confluence/WIKI) 조합을 추천한다.


출저: http://projectresearch.co.kr/2008/06/28/%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%ED%98%91%EC%97%85%EC%9D%84-%EC%9C%84%ED%95%9C-trac-codebeamer-jira-mantis%EC%9D%98-%EA%B0%84%EB%8B%A8-%EB%B9%84%EA%B5%90/

'2019년 이전 정리 > 협업(이슈관리, 형상관리)' 카테고리의 다른 글

Android Maven 설치 하기  (0) 2013.12.12
Android Ant 빌드 하기  (0) 2013.12.12
Trac.ini 파일 설정  (0) 2013.01.02
Trac 사용법 정리 1  (0) 2013.01.02
BITNAMI  (0) 2012.12.28
Posted by hoonihoon
2012. 12. 20. 13:05




티스토리 소스코드 넣기 가장 쉬운 방법으로 진행 해보실꼐요.

티스토리 코드가 가장 이쁘게 들어 갈꺼에요 ^^

1.  http://alexgorbatchev.com/SyntaxHighlighter/download/ 에서 zip 파일 내려받으세요.

syntaxhighlighter_3.0.83.zip

소스코드 바로 받으시려면 파일 클릭 


2. 티스토리 관리자 모드로 들어간뒤, 왼쪽메뉴에 [꾸미기]-[HTML/CSS 편집]-[파일업로드]란에서 조금전에 다운 받은 압축파일에  script와 style 폴더 안에 js 와 css 확장자 파일을 업로드 해주세요.




3. [꾸미기]-[HTML/CSS 편집]에서 skin.html 란에 </head> 검색하시고, 바로 윗줄에 아래와 명령문을 넣어주고 저장한다!

<script type="text/javascript" src="./images/shCore.js"></script>

<link rel="stylesheet" type="text/css" href="./images/shCore.css" />
<link rel="stylesheet" type="text/css" href="./images/shThemeDefault.css" />

<script type="text/javascript" src="./images/shBrushAppleScript.js"></script>
<script type="text/javascript" src="./images/shBrushAS3.js"></script>
<script type="text/javascript" src="./images/shBrushBash.js"></script>
<script type="text/javascript" src="./images/shBrushColdFusion.js"></script>
<script type="text/javascript" src="./images/shBrushCpp.js"></script>
<script type="text/javascript" src="./images/shBrushCSharp.js"></script>
<script type="text/javascript" src="./images/shBrushCss.js"></script>
<script type="text/javascript" src="./images/shBrushDelphi.js"></script>
<script type="text/javascript" src="./images/shBrushDiff.js"></script>
<script type="text/javascript" src="./images/shBrushErlang.js"></script>
<script type="text/javascript" src="./images/shBrushGroovy.js"></script>
<script type="text/javascript" src="./images/shBrushJava.js"></script>
<script type="text/javascript" src="./images/shBrushJavaFX.js"></script>
<script type="text/javascript" src="./images/shBrushJScript.js"></script>
<script type="text/javascript" src="./images/shBrushPerl.js"></script>
<script type="text/javascript" src="./images/shBrushPhp.js"></script>
<script type="text/javascript" src="./images/shBrushPlain.js"></script>
<script type="text/javascript" src="./images/shBrushPowerShell.js"></script>
<script type="text/javascript" src="./images/shBrushPython.js"></script>
<script type="text/javascript" src="./images/shBrushRuby.js"></script>
<script type="text/javascript" src="./images/shBrushSass.js"></script>
<script type="text/javascript" src="./images/shBrushScala.js"></script>
<script type="text/javascript" src="./images/shBrushSql.js"></script>
<script type="text/javascript" src="./images/shBrushVb.js"></script>
<script type="text/javascript" src="./images/shBrushXml.js"></script>

<script type="text/javascript">
    SyntaxHighlighter.all();
</script>




3. 적용이 됐는지 확인하기위해 아무게시판에서 글을 써볼께요.
글작성 하기 이전에 아래 사진처럼 HTML 란에 체크를 꼭 해주세요



4. 아래와 같은 태그 형태 안에 소스 코드를 넣어 주시면 됩니다. 

<pre class="brush:java"> 

class java{

}

</pre>


<pre> 태그의 class를 "brush:{사용하고자하는 소스코드 종류}"로 적용 시켜줘야합니다. 

티스토리 소스코드 가 적용되었습니다. ^^

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
        
    /**
     * @see HttpServlet#HttpServlet()
     */
    public LoginServlet() {
        super();
        // TODO Auto-generated constructor stub
    }
 
    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
    }
}



티스토리 소스코드 넣기 가장 쉬운 방법을 포스팅 마치겠습니다.

Posted by hoonihoon
2012. 12. 6. 11:04
현재 client 와 server 간의 data 송/수신에 대해 알아 보고 있다. 예전부터 궁금했던 것은 client 에서 server 에 요청을 하면 server는 어떤 동작을 취하게 되고 어떻게 client 에게 데이터를 보내주는지 궁금했었다. 아래 방법은 어느 정도 보편화 되있는 방법이다. 하지만 나는 WAS 개발자가 아니라 더 좋은 방법이 있을 수 도 있다. client 개발자에게 어느정도 도움이 될 것으로 생각된다. 쉽게 생각하고 아래를 보자. 

 1. client 에서 url 주소로 server 에 parameter 값을 보낸다. 

2. server는 는 client 에서 받은 parameter로 DB를 쿼리하여 data를 얻는다.

 3. server 는 얻은 데이터를 xml, json 타입으로 만들어 out.print 한다. 

 4. client 는 out.print 된 정보를 가져온다.

 5. client 는 json,xml 방식으로 받은 값으로 요구에 맞게 UI를 만들어 준다. 


 이해가 잘 되지 않았다면 소스 코드를 보자 


 우선 1번 (Android 에서 사용한 방법이다.)

HttpClient client = new DefaultHttpClient();

String url = "http://서버아이피/TestJSONvsXML/JsonSearchResult2.jsp";
   
   HttpPost httpPost = new HttpPost(url);
   List list = new ArrayList();
   list.add(new BasicNameValuePair("search_key", "writer"));
   list.add(new BasicNameValuePair("search_value", "김태훈"));
   UrlEncodedFormEntity ent = new UrlEncodedFormEntity(list, "euc-kr");
   httpPost.setEntity(ent);
   HttpResponse response = client.execute(httpPost);
2번 . (JSP 에서 처리과정)
String search_key = request.getParameter("search_key");
String search_value = request.getParameter("search_value");

client 에서 보낸 key받을 통해 value 값을 얻는다. 그 값을 query를 진행 

 3번. json 타입을 만들어 주는 서버의 모습.

private JSONArray jsonArray;;

ArrayList itemObjectList= new ArrayList();  

while(rs.next()){  
    JSONObject jsonObject = new JSONObject();
    jsonObject.put("id", rs.getString("id"));
    jsonObject.put("title", rs.getString("title"));
    jsonObject.put("content", rs.getString("content"));
    jsonObject.put("writer", rs.getString("writer"));
    jsonObject.put("date", rs.getString("date"));
    itemObjectList.add(jsonObject);

}

jsonArray = JSONArray.fromObject(itemList);

out.print(jsonArray);   //jsp 페이지에 그냥 뿌려준다.

4. 1번에서 이어지는 코드이다. (Android)

HttpResponse response = client.execute(httpPost);  //1번에서 server에 보낸고 응답을 받는다.
HttpEntity reEntity = response.getEntity();

InputStream in =  reEntity.getContent();

 BufferedReader br = new BufferedReader(new InputStreamReader(in , "EUC-KR"));

 int bufferSize = 1024*1024;
      char readBuf [] = new char[bufferSize];
      int resultSize = 0;
      
      StringBuilder sb = new StringBuilder();
      while((resultSize = br.read(readBuf))!= -1){
       if(resultSize == bufferSize){
        sb.append(readBuf);
       }else{
        for(int i = 0; i < resultSize; i++){
         sb.append(readBuf[i]);
        }
       }
      }

5번. Android 에서 에서 JSON 데이터 파싱하기

String str = sb.toString();
      JSONArray jsonArray = new JSONArray(str);
      String[] array = new String[jsonArray.length()];
      for(int i =0; i< jsonArray.length(); i++) {
       StringBuilder sb2 = new StringBuilder();
       sb2.append(jsonArray.getJSONObject(i).getString("id").toString());

      }


Posted by hoonihoon