Android:使用OkHttp框架与后台通信、获取数据

摘要:本文介绍了Android应用如何与服务器通信的一些机制,并分享了笔者的一些开发经验与技巧,通过具体的代码描述OkHttp框架的使用,适合初学者。

对于初学者来说,前后端一手抓很常见,如果你想要了解一点后台开发的话,那么建议看一下我的另一篇文章:
Java后台开发,轻量级框架Spring+SpringMVC+MyBatis (SSM)的使用


1 - 引言

不太严谨地说,接入网络的终端(手机、主机等)都是通过网络层(IP层)的报文/数据报进行沟通的。具体可以参考百度百科-五层因特网协议栈的一些介绍,我们只需要了解一些基本原理就好了。(不过做网络应用开发还是应该学一点计算机网络的~)

狭义的理解,前后端通信的媒介就是Http报文,我们要做的就是 Android 前端发送Http报文,后端服务器接收并处理,然后返回一个结果报文。

在这里插入图片描述

而我接下来介绍的OkHttp框架就是一个比较流行的HTTP框架,它提供封装好的方法来帮助打包我们要提交或者请求的数据,并帮助我们发送到服务器。

2 - 初尝 OkHttp

2.1 一些准备

使用Android Studio的同学先添加依赖implementation com.squareup.okhttp3:okhttp:3.11.0' ,使用Eclipse的同学只能自己找包了(不过新手还是建议使用Android Studio,比较智能)。

在写博文的时候OkHttp还是3.11.0版本,最新版还是请查看OkHttp-GitHub

此外还要在 AndroidManifest 文件中添加网络权限App才能联网:
<uses-permission android:name="android.permission.INTERNET"/>

2.2 Http 请求类型

Http请求有POST、GET、DELETE、PUT等方式,在Android里我们一般只会使用到两种,POST、GET。

POST:可以在报文内部(我们也可以称为body)添加参数,提交数据到服务器。
GET:也允许携带参数,不过参数要跟在指定的URL后面,如Http://localhost:8080?param=xxx & param=yyy, 参数以键-值对的形式拼接,多个参数需要使用 & 符号。但这种形式安全性低,所以GET一般只用来请求一些数据,如请求百度的首页。一些把密码、个人信息等当作参数,明文发送的请求实在不是很明智。

那么怎么选择使用GET还是POST呢?
笔者分享一下自己在大学做开发的经历,希望能帮到大家。使用哪一种方法一般不是由前端开发人员决定的,而是后端开发人员根据前端的需求制作接口文档,里面详细记录了各种接口的URL、参数、返回值、注意事项等,前端开发人员对照文档使用即可。比如下面这个场景:

角色:前端技术人员小李,后端技术人员大明

小李:大明哥,我们前端组最近要实现登录的功能啦,你帮我们写个接口呗!
大明:哦哦,收到收到,有什么参数吗?
小李:传个用户名和密码就行了。
大明:行,那用户名用u_name表示,密码用u_password表示,行不?
小李:OK!对了,两个参数都是字符串类型的,字符集用UTF-8。
大明:没问题,迟点我把接口文档给你们组发过去。
小李:OK,辛苦辛苦~

(实际上并不会这么和谐~~ 需求一时爽,@&%#……)

如果你恰好参与了接口设计的讨论,那么不妨了解一下什么是REST风格,它是HTTP协议1.1版本制定的重要部分。简单来说就是POST、GET对应着网络资源的增加和获取,如上传一张图片对应着服务器文件资源的增加,加载图片对应着资源的获取。

2.3 Get 请求实例

使用OKHttp的同步GET方法:这里还是沿用《第一行代码》请求百度首页的栗子。

OkHttpClient client = new OkHttpClient();   //新建客户端处理请求
Request request = new Request.Builder()
    .url("http://www.baidu.com")  //添加要请求的URL
    .build();
try
  • 11
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值