Spring For Android, Rest Client 를 사용한 서버와의 통신

프로그래밍/Android 2013. 9. 4. 22:04

Spring For Android, Rest Client 를 사용한 서버와의 통신



Spring For Android 는 안드로이드 애프리케이션 개발을 단순화하기 위한 Spring 프레임워크의 확장이다. 라고 정의가 되어 있네요

주요 지원하는 기능을 살펴보면 아래와 같습니다.


첫째. 안드로이드용 Rest Client 

- Rest Client 를 통해서 서버와의 통신을 쉽게 처리할 수 있습니다.

둘째. Auth support for accessing secure APIs

- 인증 관련 지원 입니다.


Rest Client 를 사용해서 서버와의 통신을 지원하게 되면서 서버와 데이터를 손쉽게 주고 받을 수 있습니다.

서버 통신 예제


public class HttpGetActivity extends Activity {


@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_http_get);

}


@Override

protected void onStart() {

super.onStart();

new HttpGetTask().execute( 10);

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.http_get, menu);

return true;

}

public void showResult( UserModel model){

TextView view = (TextView)findViewById( R.id.textview);

if( model != null){

view.setText( "id : " + model.getId() + ", name : " + model.getName());

}

}

class HttpGetTask extends AsyncTask<Integer, Void, UserModel>{

@Override

protected UserModel doInBackground(Integer... params) {

final String url = "http://192.168.56.1/zadu/user/{id}";

// Accept header "application/json" 을 명시하여 JSON 데이터를 리턴받길 원한다고 설정해 줍니다.

                        HttpHeaders requestHeaders = new HttpHeaders();

            List<MediaType> acceptableMediaTypes = new ArrayList<MediaType>();

            acceptableMediaTypes.add(MediaType.APPLICATION_JSON);

            requestHeaders.setAccept(acceptableMediaTypes);

            

            // Rest Template 객체에서 사용할 reqeustEntity 를 위에서 정의한 request Header 를 사용해서 생성합니다.

            HttpEntity<?> requestEntity = new HttpEntity<Object>(requestHeaders);


            // 서버와의 통신을 담당할 RestTemplate 객체를 생성합니다.

            RestTemplate restTemplate = new RestTemplate();

    // MappingJacksonHttpMessageConverter 를 통해서 결과값인 JSON 데이터를 UserModel 데이터로 변환할 수 있습니다.

            MappingJacksonHttpMessageConverter converter = new MappingJacksonHttpMessageConverter();

            restTemplate.getMessageConverters().add(converter);

            

            // HTTP GET 요청을 수행합니다.

            ResponseEntity<UserModel> responseEntity = restTemplate.exchange(url, HttpMethod.GET, requestEntity, UserModel.class, params[0]);

            

// 결과값을 받아옵니다.

                        return responseEntity.getBody();

}

@Override

        protected void onPostExecute(UserModel result) {


            // 결과값을 찍어줍니다.

            showResult(result);

        }

}

}



: