336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
Android to Spring Request And Response
@ Request
이전에 했던 실습에 이어서 AsyncTask를 테스트한다
그러기 위해서 이전의 프로젝트에서 NetworkTask2를 생성해서 테스트를 해본다
- Map<String, String>
- 파라미터
- networkTask2.execute()에서의 안에 값과 같다
- Integer
- 진행률
- String
- doInbackground의 Return Type
그런 후 구현을 시켜준다
그러고 난 후 이전에 했던 doInBackground의 로직을 그대로 가져온 후 로직을 수정하도록 한다
* doInBackground
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
@Override
protected String doInBackground(Map<String, String>... maps) {
// HTTP 요청 준비 작업
HttpClient.Builder http = new HttpClient.Builder("POST", "http://10.225.152.165:8080/SpringToAndroid/android2");
// 파라미터 전송
http.addOrReplace("test", "테스트입니다");
// HTTP 요청 전송
HttpClient post = http.create();
post.request();
// 응답 상태코드 가져오기
int statusCode = post.getHttpStatusCode();
// 응답 본문
String body = post.getBody();
return body;
}
|
cs |
파라미터에 보면 ...을 볼 수 있다
위의 방식은 가변 배열로써 주고 싶은데로 줄 수 있게 된다 배열로 사용을 한다는 것만 알아두면 된다
이제 addAllParameters를 이용해서 Map의 파라미터를 넣게된다
이제는 메인에 가서 NetworkTask2를 실행시켜 보자
1
2
3
4
5
6
7
8
9
10
11
12
|
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
NetworkTask2 networkTask = new NetworkTask2();
Map<String, String> params = new HashMap<String, String>();
params.put("title", "제목입니다");
params.put("memo", "내용입니다");
networkTask.execute(params);
}
|
cs |
onCreate 구문에 Map을 생성해서 제목과 메모를 보내본다
이제 STS에서 title과 memo를 이용해서 파라미터를 받아본다
이제 STS Console을 확인해보면 제목과 내용이 뜨는 것을 볼 수 있다
@ Response
이제는 요청뿐만 아니라 응답을 받아서 앱으로 보여주는 실습을 해본다
데이터를 응답을 받기위해서는 데이터를 JSON으로 바꿔주는 jackson-databind가 필요하다
1
2
3
4
5
|
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.7.3</version>
</dependency>
|
cs |
Dependency를 pom.xml에 추가를 한다
그런 후 android3을 맵핑시켜본다
1
2
3
4
5
6
7
8
9
10
11
12
|
@RequestMapping("/android3")
@ResponseBody
public Map<String, String> androidTestWithRequestAndResponse(HttpServletRequest request) {
System.out.println(request.getParameter("title"));
System.out.println(request.getParameter("memo"));
Map<String, String> result = new HashMap<String, String>();
result.put("data1", "메모 1입니다");
result.put("data2", "메모 2입니다");
return result;
}
|
cs |
위와 같이 ResponseBody을 적어주고 Map을 리턴시켜준다 그런 후 서버를 재 시작시켜준다
이제는 다시 Android Studio에서 로직을 적어준다
Spring에서 보내준 데이터는 String body로 받게 된다
post.getBody()로 받게 된 데이터는 onPostExecute의 파라미터로 보내지게 된다
받아온 응답을 Studio Console에 찍어주게 된다
'[ Developer ] > Android' 카테고리의 다른 글
[Android] 안드로이드 카메라 구동시키기 (9) | 2016.08.02 |
---|---|
[Android] 안드로이드 웹 서버 응답 받기 Android to Spring (2) | 2016.08.01 |
[Android] 안드로이드 웹 서버 연동 Android to Spring (0) | 2016.07.29 |
[Android] 안드로이드 SQLite 컬럼 추가 (1) | 2016.07.28 |
[Android] 안드로이드 SQLite 데이터 조회 (0) | 2016.07.27 |