最近工作,需要用到Spring for Android。就来谈谈这个小框架吧。

使用普通的GET请求非常的简单,如下:

org.springframework.web.client.RestTemplate执行 RESTful 原则,是客户端 HTTP 访问的中心类。

org.springframework.http包包含客户端/服务器端 HTTP 传输的基本抽象。

  1. AndroidSpring类中,导入RestTemplate类和org.springframework.http包。AndroidSpring类扩展Activity类。onCreate(Bundle savedInstanceState) 方法在活动首次调用时被调用。
  2. 使用setContentView方法和布局资源定义用户界面。
     setContentView(R.layout.main);

  3. main.xml中定义的 id 为 "springmessage" 的TextView元素上,使用findViewById方法创建一个 Android 小部件TextView对象。
     TextView springmessage = (TextView) findViewById(R.id.springmessage);

  4. 创建一个HttpHeaders对象,它表示 HTTP 请求和响应头。
     HttpHeaders requestHeaders = new HttpHeaders();

  5. 将主体的媒体类型设置为跟Content-Type头指定的一样。媒体类型应该匹配 JAX-RS web 服务生成的媒体类型。
     requestHeaders.setContentType(new MediaType("text","plain"));

  6. 创建一个包含请求头的 HTTP 请求实体。
     HttpEntity<String> requestEntity = new HttpEntity<String>(requestHeaders);

  7. 使用构造函数,利用默认设置,创建RestTemplate的一个新实例。
     RestTemplate restTemplate = new RestTemplate();

  8. 指定到宿主在 URI 路径/helloworld上的资源的 URL。
    String url = "http://192.168.1.68:7001/AndroidJAX-RS/jaxrs/helloworld";

  9. 通过使用exchange方法将请求实体发送到请求,调用到指定 URI 模板的 HTTP 方法。exchange方法返回响应为ResponseEntity
    ResponseEntity<String> responseEntity = restTemplate.exchange(url, HttpMethod.GET, requestEntity, String.class);

  10. 使用getBodyResponseEntity检索响应字符串。
    ResponseEntity<String> String result = responseEntity.getBody();

  11. 设置TextViewUI 组件上的字符串消息。
    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中,就好。
问题解决了。很开心~~

更多相关文章

  1. Kotlin for Android使用教程(一)
  2. Service的onStartCommand方法的疑问
  3. Android(安卓)学习之那些年我们遇到的BUG8:ArrayAdapter 直接使用
  4. 移动开发:Android官方提供的支持不同屏幕大小的全部方法
  5. AndroidStudio中使用Kotlin--实现接口方法
  6. Android(安卓)架构组件之 Lifecycle 使用详解
  7. Android(安卓)- base - SQLite
  8. [Android实例] Android(安卓)实例SOCKET发送HTTP请求
  9. android sqlite 操作:rawQuery and execSQL

随机推荐

  1. Android视频录制
  2. android之【部分控件】
  3. Android设计一个答题APP
  4. Android(安卓)Studio使用github教程
  5. Android一些常用的颜色值
  6. 10 Alternative Android(安卓)App Stores
  7. Android(安卓)加密解密
  8. Spinner选择框应用
  9. Android~~布局Layout
  10. android拍照相册工具类