OkHttp的基本使用(二)Post请求
来源:互联网 发布:淘宝上不错的美国代购 编辑:程序博客网 时间:2024/06/05 19:31
上篇【OkHttp的基本使用一】介绍了OkHttp的Get请求方式,也是OkHttp基本使用的开端,如果是第一次使用OkHttp的同学可以先从OkHttp的基本使用一开始阅读,此篇主要介绍OkHttp的Post请求方式。
在介绍OkHttp的Post请求的基本使用之前,我们需要了解什么是Post,以及什么是Get?对于android程序员来说,对这2个概念不像web工程师那样熟悉,在这里我们先简要说明Post和Get请求的区别:
Post(当涉及到参数的安全问题或者参数比较大的时候,应该使用Post请求方式),比如:
在实际项目开发中,只要是使用Post请求方式的,都涉及参数传递。文章开头也说了,Post和Get请求的最大的不同点就在参数传递,所以接下来我们介绍一下Post的各种格式的参数传递。(注意:对于初学者,将视线重点放在Post和Get的参数传递方式上来学习OkHttp请求可能要更直观一些,也可能更容易理解)。
对比Form表单数据传递和Json格式数据传递,对于纯粹的android程序员来说,可能觉得一个使用的是FormBody、一个使用的是RequestBody+Json,好像没有什么不同,都是key:value格式。但是对于Web后台接收的方式会有所不同,所以将原本应该是Form表单参数改成Json参数传递,后台将接受不到前端传递的参数,因为其媒体类型(MediaType)不一样。
说明:对于android程序员怎么知道该使用Form表单格式的数据传递方式,还是Json格式的数据传递方式?这个问题取决于后台的数据接收逻辑;所以,在实际开发中如果没有特殊说明的情况下,默认采用表单格式的数据传递;如果有特殊说明,那根据说明内容进行传递。不过,目前大多数公司要么采用form表单,要么采用Json(说白了,Json其实就是一个特殊格式的String对象)。
OkHttp是一个可以在Java项目和Android项目中使用的框架。所以其内部并没有Handler类来完成线程间的通信。所以,对于android而言,其返回的结果都是在子线程中。需要程序人自己写Handler完成数据传递。
OkHttp的Post和Get请求都有2中方式:同步和异步。其中同步请求不能直接在UI线程中进行。
Get和Post只是Http协议中的一块,2者的主要区别在数据的传递。学些的时候,可以从数据的传递入手去理解它们。
OkHttp使用建议在一个项目中只有一个OkHttp对象。使用前可以对OkHttp进行封装。
本文章的源码:Github
在介绍OkHttp的Post请求的基本使用之前,我们需要了解什么是Post,以及什么是Get?对于android程序员来说,对这2个概念不像web工程师那样熟悉,在这里我们先简要说明Post和Get请求的区别:
- Post或者Get只是Http协议中向后台服务器发送数据的一种机制,是Http协议的一个组成部分。
- Post请求是将要提交到后台服务器的数据放在Http包的包体中。
- Get请求是将数据放在URL之后,比如http://androidxx.cn/forum.php?mo ... d=11&extra=page%3D1,可以看到此URL由2部分组成,分别是http://androidxx.cn/forum.php和?后面的参数。这就是典型的Get请求方式。
- 因为Get请求时直接将参数放在URL后面,而URL的长度是有一定的限制,所以当传递的数据特别大的时候,Get请求就不能完成。
- 相比较,Post请求的参数是放在Http包的内部,不能轻易被看到;Get请求的参数直接是跟在URL之后,可以很容易被用户获取。所以,相对而言,Post的请求方式更安全。
Post(当涉及到参数的安全问题或者参数比较大的时候,应该使用Post请求方式),比如:
- 登陆
- 注册
- 上传
- 支付
- 下单
- ...
- 获取图片
- 获取文章详情
- ...
- Post的同步请求方式(在android的主线程中,需要将下面的代码放在new Thread的run方法中执行,否则报错(错误详见))
在实际项目开发中,只要是使用Post请求方式的,都涉及参数传递。文章开头也说了,Post和Get请求的最大的不同点就在参数传递,所以接下来我们介绍一下Post的各种格式的参数传递。(注意:对于初学者,将视线重点放在Post和Get的参数传递方式上来学习OkHttp请求可能要更直观一些,也可能更容易理解)。
- Form表单数据的传递(上面的代码中的FormBody就是表单参数的设置方式,表单数据的传递就不重复帖代码,代码同上)
- Json格式数据的传递
对比Form表单数据传递和Json格式数据传递,对于纯粹的android程序员来说,可能觉得一个使用的是FormBody、一个使用的是RequestBody+Json,好像没有什么不同,都是key:value格式。但是对于Web后台接收的方式会有所不同,所以将原本应该是Form表单参数改成Json参数传递,后台将接受不到前端传递的参数,因为其媒体类型(MediaType)不一样。
- String字符串传递
说明:对于android程序员怎么知道该使用Form表单格式的数据传递方式,还是Json格式的数据传递方式?这个问题取决于后台的数据接收逻辑;所以,在实际开发中如果没有特殊说明的情况下,默认采用表单格式的数据传递;如果有特殊说明,那根据说明内容进行传递。不过,目前大多数公司要么采用form表单,要么采用Json(说白了,Json其实就是一个特殊格式的String对象)。
- Post异步请求
- 总结
OkHttp是一个可以在Java项目和Android项目中使用的框架。所以其内部并没有Handler类来完成线程间的通信。所以,对于android而言,其返回的结果都是在子线程中。需要程序人自己写Handler完成数据传递。
OkHttp的Post和Get请求都有2中方式:同步和异步。其中同步请求不能直接在UI线程中进行。
Get和Post只是Http协议中的一块,2者的主要区别在数据的传递。学些的时候,可以从数据的传递入手去理解它们。
OkHttp使用建议在一个项目中只有一个OkHttp对象。使用前可以对OkHttp进行封装。
- 简易封装代码如下:
本文章的源码:Github
3 1
- OkHttp的基本使用(二)Post请求
- 简述OkHttp的使用:get、post请求
- okhttp的post请求
- Android中Okhttp进行get和post提交及数据请求的基本使用
- Okhttp post请求简单使用
- OkHttp的基本使用(一)Get请求
- okhttp框架的最简单的基本使用 post和get请求以及用gson解析请求的数据
- OkHttp的post网络请求
- okhttp网络框架的使用get和post请求
- OKhttp的get请求和post请求
- OkHttp使用post请求注意点
- OkHttp的使用--GET/POST(异步)
- OKHttp基本的网络请求
- okhttp初体现(okhttp的get请求的使用)
- Volley的使用(二) post请求
- OkHttp的POST、GET请求方式
- 关于OkHttp缓存post请求的问题
- 关于Okhttp的post请求数据
- SHA1算法
- 16进制颜色透明度计算方法
- Css Html 鼠标移上标签展示图表
- Python学习记录二
- [LeetCode]208. Implement Trie (Prefix Tree)
- OkHttp的基本使用(二)Post请求
- Tomcat8.5 不能进入Manager App
- PHP结合memcacheq消息队列解决并发问题
- JavaScript 禁止右键、选取、粘贴
- dhcp-4.3.5移植
- struts2的请求流程,过滤器和拦截器区别
- ios 学习资料汇总~持续更新
- http https 和一些常用的服务请求默认端口
- FreeMaker+Xml导出word(含图片)