创新实训博客(15)——Android开发中Kotlin与后端的接口交互
2020-07-14 06:21
721 查看
用到的模块
okhttp
Call——同步请求
同步请求就是执行请求的操作是阻塞式,直到 HTTP 响应返回。
它对应 OKHTTP 中的 execute 方法。
Call——异步请求
异步请求就类似于非阻塞式的请求,它的执行结果一般都是通过接口回调的方式告知调用者。
它对应 OKHTTP 中的 enqueue 方法。
Dispatcher
对于同步调用,需要带上自己的线程,并负责管理发出的同时请求数量。 同时连接过多会浪费资源。 太少会损害延迟。
对于异步调用,Dispatcher实现最大并发请求的策略。 可以设置每个Web服务器的请求线程的最大值(默认为5)和服务器最大值(默认为64)。
向后端发get请求
不需要加.get
当然加上也行
[code]OkHttpClient client = new OkHttpClient(); String run(String url) throws IOException { Request request = new Request.Builder() .url(url) .build(); try (Response response = client.newCall(request).execute()) { return response.body().string(); } }
向后端发post请求
首先需要设置好类型
然后再添加.post参数,向后端发起post请求
[code]public static final MediaType JSON = MediaType.get("application/json; charset=utf-8"); OkHttpClient client = new OkHttpClient(); String post(String url, String json) throws IOException { RequestBody body = RequestBody.create(json, JSON); Request request = new Request.Builder() .url(url) .post(body) .build(); try (Response response = client.newCall(request).execute()) { return response.body().string(); } }
处理返回的参数
以异步的请求为例子:
在onResponse回调函数中进行处理。
我这里首先判断返回状态是不是200(代表成功),然后把即将在view中显示的数据保存下来,然后使用handler,让主线程设置view组件。
因为,在Android中,不允许子线程操作view组件,也就是在okhttp请求中,必须要调用主线程来实现视图层的更新。
[code]override fun onResponse(call: Call, response: Response) { val resobj = JSON.parseObject(response.body!!.string()) if (resobj["code"] == 200) { // 获取成功 item = JSON.parseObject(resobj["data"].toString()) val message = Message() message.what = 1 handler.sendMessage(message) } else { // 获取失败提示信息 Looper.prepare() Toast.makeText( this@BlogActivity, resobj["code"].toString() + "-" + resobj["msg"].toString(), Toast.LENGTH_SHORT ).show() Looper.loop() } }
完成的显示效果
相关文章推荐
- 创新实训博客(24)——探索Android开发中的消息推送功能(创建通知、创建展开式通知、通过通知打开Activity)
- 创新实训博客(19)——Android开发中Layout组件动态化
- 创新实训博客(23)——探索Android开发中的消息推送功能(Notification的学习)
- 创新实训博客(33)——探索Android开发中的消息推送功能(推送服务模块进阶设计)
- 创新实训博客(17)——Android开发中ListView高度自适应以及组件进阶使用
- 创新实训博客(16)——Android开发中View的下拉刷新与上拉加载探索与实现
- 创新实训博客(30)——探索Android开发中的消息推送功能(推送服务模块)
- 【Android开发日志】Kotlin 面向对象编程 – 数据类与单例类(15)
- 创新实训博客(29)——接口调用请求汇总(可视化部分)
- 创新实训博客(25)——接口调用请求汇总(用户基本操作和历史记录相关部分)
- Android开发,Kotlin的了解与学习(七)-----接口与实现
- 如何解决Android开发学习过程中缺乏后端接口的问题「Android,资源向」
- kotlin开发Android入门篇四接口的创建和使用
- 创新实训博客(36)——Android端push推送设置和主界面细节优化处理
- (android 互联网开发)2 访问https接口,进行数据交互(已在实际项目中使用)
- 创新实训博客(27)——接口调用请求汇总(博客相关部分)
- 创新实训博客(26)——接口调用请求汇总(后台管理部分)
- 创新实训博客(22)——Vue端和Android端对搜索结果的关键词高亮处理方案
- 创新实训博客(28)——接口调用请求汇总(App和博客相关部分)
- (android 互联网开发)2 访问https接口,进行数据交互(已在实际项目中使用)