Spring for Android 探究
16lz
2021-01-23
Spring for Android是什么?
-
Spring for Android 是一个Spring框架的扩展,目标是简化本地Android应用开发。
-
特性:
一、一个针对Android的REST客户端
二、对于访问安全API的一个认证的支持
Spring for Android能为开发者带来什么?
就笔者而言,目前针对特性一体会到的好处主要有两点:
-
1、REST客户端调用模板:方便与提供REST服务的服务端进行交互。
-
2、JSON&XML解析:目前,客户端与服务端进行数据交换的格式基本全部采用JSON或XML,Spring for Android可以方便的进行JSON或XML数据的解析。
代码示例
...... private class DownloadStateTask extends AsyncTask<MediaType, Void, State> { private String abbreviation; @Override protected void onPreExecute() { showLoadingProgressDialog(); // retrieve the abbreviation from the EditText field EditText editText = (EditText) findViewById(R.id.edit_text_abbreviation); abbreviation = editText.getText().toString(); } @Override protected State doInBackground(MediaType... params) { try { if (params.length <= 0) { return null; } MediaType mediaType = params[0]; // The URL for making the GET request final String url = getString(R.string.base_uri) + "/state/{abbreviation}"; // Set the Accept header for "application/json" or "application/xml" HttpHeaders requestHeaders = new HttpHeaders(); List<MediaType> acceptableMediaTypes = new ArrayList<MediaType>(); acceptableMediaTypes.add(mediaType); requestHeaders.setAccept(acceptableMediaTypes); // Populate the headers in an HttpEntity object to use for the request HttpEntity<?> requestEntity = new HttpEntity<Object>(requestHeaders); // Create a new RestTemplate instance RestTemplate restTemplate = new RestTemplate(); if (mediaType.equals(MediaType.APPLICATION_JSON)) { restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter()); } else if (mediaType.equals(MediaType.APPLICATION_XML)) { restTemplate.getMessageConverters().add(new SimpleXmlHttpMessageConverter()); } // Perform the HTTP GET request ResponseEntity<State> responseEntity = restTemplate.exchange(url, HttpMethod.GET, requestEntity, State.class, abbreviation); // Return the state from the ResponseEntity return responseEntity.getBody(); } catch (Exception e) { Log.e(TAG, e.getMessage(), e); } return null; } @Override protected void onPostExecute(State state) { dismissProgressDialog(); showState(state); } }
-
RestTemplate类是Spring for Android RestTemplate库的核心。从概念上来说,它类似于其他Spring项目中的模板类。RestTemplate的行为是通过提供回调方法并配置HttpMessageConverter(用于将对象序列化为HTTP请求体以及将响应反序列化为对象)来定制的。在创建新的RestTemplate实例时,构造方法会创建出几个支持对象来实现RestTemplate的功能。
-
对象到JSON的序列化:在Spring for Android RestTemplate中,对象到JSON的序列化需要使用第三方的JSON映射库。Spring for Android支持两个库,一个是Jackson JSON Processor,另一个是Google Gson。虽然Jackson是个众所周知的JSON解析库,但Gson库却更小,这样在打包时Android应用的体积就会更小。
代码示例如下:
利用Jackson库:
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
利用Gson库:
restTemplate.getMessageConverters().add(new GsonHttpMessageConverter());
- 对象到XML的序列化也需要使用第三方的XML映射库。Simple XML serializer用于提供该序列化功能。 代码示例如下:
restTemplate.getMessageConverters().add(new SimpleXmlHttpMessageConverter());
更多相关文章
- JS判断客户端是否是iOS或者Android
- 《淘宝客户端 for Android》项目实战 html webkit android css3
- 【Android增量升级系列_01】 浅谈Android增量更新客户端的实现方
- Android Jni代码示例讲解
- Android 多线程之synchronized锁住的是代码还是对象(二)
- Android Handler机制5之Message简介与消息对象对象池
- 【Android】socket通信【客户端访问】
- 来往 android客户端发布
- Android 统计图表引擎 AChartEngine(三) - 示例源码折线图、饼图