본문 바로가기
[ Developer ]/Android

[Android] 안드로이드 웹 서버 요청 및 응답 Android to Spring

by 김현섭. 2016. 7. 31.
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<StringString>... 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<StringString> params = new HashMap<StringString>();
        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<StringString> androidTestWithRequestAndResponse(HttpServletRequest request) {
        System.out.println(request.getParameter("title"));
        System.out.println(request.getParameter("memo"));
        
        Map<StringString> result = new HashMap<StringString>();
        result.put("data1""메모 1입니다");
        result.put("data2""메모 2입니다");
        
        return result;
    }
cs

위와 같이 ResponseBody을 적어주고 Map을 리턴시켜준다 그런 후 서버를 재 시작시켜준다
이제는 다시 Android Studio에서 로직을 적어준다

Spring에서 보내준 데이터는 String body로 받게 된다


post.getBody()로 받게 된 데이터는 onPostExecute의 파라미터로 보내지게 된다


받아온 응답을 Studio Console에 찍어주게 된다