[ 스프링과 안드로이드 연동4 : JSON으로 가져오기 ]
이번에는 안드로이드에서 스프링 프로젝트로 요청시 JSON으로 서버에서 제공하는 데이터를 가져오는 방식을 다루어 보겠습니다.
1. 먼저, 스프링 프로젝트에서 pom.xml에 라이브러리를 추가합니다.
1) jackson-databind 추가
: @ResponseBody로 반환시 필요
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.7</version>
</dependency>
2) jason-simple 추가
: JSONObject와 같은 json 객체 생성시 필요
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
<version>1.1.1</version>
</dependency>
2. 다음으로 스프링 컨트롤러 부분을 작성합니다. 스프링 컨트롤러에서 다음의 코드를 입력합니다.
여기 Android일 땐 보이지 않지만
Project로 변경시 app/libs 폴더가 보입니다. 그러면 이 폴더에 다운받은 2개의 라이브러리를 집어 넣습니다.
다음으로, android 형식으로 보기를 다시 누르고, Gradle Scripts 의 build.gradle 부분에 들어가서
dependency 부분에
다음의 2줄을 추가해줍니다.
compile files('libs/httpclient-4.2.2.jar')
compile files('libs/httpcore-4.2.2.jar')
그리고 Sync Now 선택해주면 적용이 된 것입니다.
3. 이제 안드로이드에서 코드를 작성합니다.
역시 네트워크 작업임으로 이전에서 했던 3가지 사항을 준수합니다.
1) 인터넷 사용 권한 설정(manifest에)
<!-- 인터넷 접속 권한 추가 -->
<uses-permission android:name="android.permission.INTERNET" />
// NameValuePair : 변수명과 값을 함께 저장하는 객체로 제공되는 객체이다.
ArrayList<NameValuePair> postData = new ArrayList<>();
// post 방식으로 전달할 값들을 postData 객체에 집어 넣는다.
postData.add(new BasicNameValuePair("id","아이디"));
postData.add(new BasicNameValuePair("pw","패스워드"));
// url encoding이 필요한 값들(한글, 특수문자) : 한글은 인코딩안해주면 깨짐으로 인코딩을 한다.
UrlEncodedFormEntity request = new UrlEncodedFormEntity(postData,"utf-8");
HttpPost httpPost = new HttpPost(url);
// post 방식으로 전달할 데이터 설정
httpPost.setEntity(request);
// post 방식으로 전송, 응답결과는 response로 넘어옴
HttpResponse response = http.execute(httpPost);
// response text를 스트링으로 변환
String body = EntityUtils.toString(response.getEntity());
// 스트링을 json으로 변환한다.
JSONObject obj = new JSONObject(body);// 스프링 컨트롤러에서 리턴해줄 때 저장했던 값을 꺼냄
String message = obj.getString("message");
과 같이 작성하면 된다.
'개발 > 스프링' 카테고리의 다른 글
JAVA Crawling(크로울링) 기본([펌]http://partnerjun.tistory.com/guestbook) (0) | 2017.07.30 |
---|---|
스프링과 안드로이드 연동5 : (Javascript에서 Android 함수 호출하기) (0) | 2017.06.04 |
스프링과 안드로이드 연동3 : ( 서버에서 XML로 반환해 가져오기 ) (0) | 2017.06.04 |
스프링과 안드로이드 연동2 : 서버에서 안드로이드로 이미지 가져오기(다운) (2) | 2017.06.04 |
스프링과 안드로이드 연동1(Html 소스 가져오기) (0) | 2017.06.03 |