关于Spring for Android
16lz
2021-01-26
最近工作,需要用到Spring for Android。就来谈谈这个小框架吧。
使用普通的GET请求非常的简单,如下:
org.springframework.web.client.RestTemplate
执行 RESTful 原则,是客户端 HTTP 访问的中心类。
org.springframework.http
包包含客户端/服务器端 HTTP 传输的基本抽象。
- 在
AndroidSpring
类中,导入RestTemplate
类和org.springframework.http
包。AndroidSpring
类扩展Activity
类。onCreate(Bundle savedInstanceState) 方法在活动首次调用时被调用。 - 使用
setContentView
方法和布局资源定义用户界面。setContentView(R.layout.main);
- 在
main.xml
中定义的 id 为 "springmessage" 的TextView
元素上,使用findViewById
方法创建一个 Android 小部件TextView
对象。TextView springmessage = (TextView) findViewById(R.id.springmessage);
- 创建一个
HttpHeaders
对象,它表示 HTTP 请求和响应头。HttpHeaders requestHeaders = new HttpHeaders();
- 将主体的媒体类型设置为跟
Content-Type
头指定的一样。媒体类型应该匹配 JAX-RS web 服务生成的媒体类型。requestHeaders.setContentType(new MediaType("text","plain"));
- 创建一个包含请求头的 HTTP 请求实体。
HttpEntity<String> requestEntity = new HttpEntity<String>(requestHeaders);
- 使用构造函数,利用默认设置,创建
RestTemplate
的一个新实例。RestTemplate restTemplate = new RestTemplate();
- 指定到宿主在 URI 路径
/helloworld
上的资源的 URL。String url = "http://192.168.1.68:7001/AndroidJAX-RS/jaxrs/helloworld";
- 通过使用
exchange
方法将请求实体发送到请求,调用到指定 URI 模板的 HTTP 方法。exchange
方法返回响应为ResponseEntity
。ResponseEntity<String> responseEntity = restTemplate.exchange(url, HttpMethod.GET, requestEntity, String.class);
- 使用
getBody
从ResponseEntity
检索响应字符串。ResponseEntity<String> String result = responseEntity.getBody();
- 设置
TextView
UI 组件上的字符串消息。springmessage.setText(result);
相对也GET请求,POST的请求我是费了好大劲儿去进行的。
出现了各种的错误,
1,java.lang.VerifyError: org.springframework.http.converter.json.MappingJacksonHttpMessageConverter
2, java.lang.NoSuchMethodError: org.codehaus.jackson.map.ObjectMapper.getTypeFactory
这两个是比较常遇到的,第一个问题,查到说是需要添加两个jar包(jackson-mapper-asl-1.4.2.jar,jackson-core-asl-1.4.2.jar),等我添加了这两个jar包,然restTemplate.postForObject(url, message, String.class)后,又报出了第二个错误,当我查看了ObjectMapper的源码,发现,人家根本就没有这个getTypeFactory的方法。
反正是各种的纠结。
最后还是我的老大,帮我把问题解决了。谢谢老大~~
用了最简单的方法,把问题给解决了。
org.springframework.web.client. RestTemplate.postForObject( String url, Object request, Class< String> responseType, Object... uriVariables) throws RestClientException
进行了post请求,把参数放在 uriVariables中,就好。
问题解决了。很开心~~
更多相关文章
- Kotlin for Android使用教程(一)
- Service的onStartCommand方法的疑问
- Android(安卓)学习之那些年我们遇到的BUG8:ArrayAdapter 直接使用
- 移动开发:Android官方提供的支持不同屏幕大小的全部方法
- AndroidStudio中使用Kotlin--实现接口方法
- Android(安卓)架构组件之 Lifecycle 使用详解
- Android(安卓)- base - SQLite
- [Android实例] Android(安卓)实例SOCKET发送HTTP请求
- android sqlite 操作:rawQuery and execSQL