博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android OkHttp简易使用
阅读量:7229 次
发布时间:2019-06-29

本文共 3353 字,大约阅读时间需要 11 分钟。

Android 的网络请求框架,现在事层出不穷,比如之前介绍的和,除此之外OkHttp也是Android网络请求非常优秀的框架,而且据说Android4.4的源码中可以看到HttpURLConnection已经替换成OkHttp实现了,如此优秀的网络请求框架,需要我们去学习一下。

在网上有很多关于OkHttp的使用文章,那么我为什么还要写该片文章呢?一是为了普及那些还没有使用过OkHttp的开发者认识到OkHttp这一优秀框架,二是该文章收集了比较优秀的OkHttp文章,让读者可以在该文章中直接找到学习OkHttp的精华文章。

简介

我们直接看到的介绍:OkHttp是默认有效的HTTP客户端,而且具有的优点:

1、连接池可减少请求延迟(如果HTTP / 2不可用);

2、透明的GZIP缩小下载大小;

3、响应缓存避免了完全重复请求的网络。

网络请求使用

1)配置环境

在app的build.gradle中添加OkHttp的依赖

compile 'com.squareup.okhttp3:okhttp:3.9.1'复制代码

由于OkHttp内部依赖okio,需要同时添加okio依赖:

compile 'com.squareup.okio:okio:1.6.0'

配置好环境就可以使用的了。

2)get请求
OkHttpClient okHttpClient = new OkHttpClient();        Request request = new Request.Builder().url("https://interface.meiriyiwen.com/article/today?dev=1").build();        Call call = okHttpClient.newCall(request);        call.enqueue(new Callback() {            @Override            public void onFailure(Call call, IOException e) {            }            @Override            public void onResponse(Call call, Response response) throws IOException {                Log.i("test","text------>"+response.body().string());            }        });复制代码

注意:需要用到call.enqueue的方法进行异步请求,其回调的onResponse方法是运行在线程里的。

3)POST请求提交Json数据
try {            JSONObject jsonObject = new JSONObject();            jsonObject.put("version","3.5");            jsonObject.put("platform","android");            MediaType JSON = MediaType.parse("application/json; charset=utf-8");            RequestBody  body = RequestBody.create(JSON,jsonObject.toString());            OkHttpClient okHttpClient = new OkHttpClient();            Request request = new Request                    .Builder()                    .url("http://v3.wufazhuce.com:8000/api/hp/detail/1557")                    .post(body)                    .build();            Call call = okHttpClient.newCall(request);            call.enqueue(new Callback() {                @Override                public void onFailure(Call call, IOException e) {                }                @Override                public void onResponse(Call call, Response response) throws IOException {                    Log.i("test","text------>"+response.body());                }            });        } catch (JSONException e) {            e.printStackTrace();        }复制代码

需要在创建一个MediaType,并且调用MediaType.parse("application/json; charset=utf-8")指定JSON类型。创建一个RequestBody对象,在Builder的post方法传入即可。

4)POST提交表单
OkHttpClient okHttpClient = new OkHttpClient();        FormBody body = new FormBody                .Builder()                .add("version","3.5")                .add("platform","android")                .build();        Request request = new Request                .Builder()                .url("http://v3.wufazhuce.com:8000/api/hp/detail/1557")                .post(body)                .build();        Call call = okHttpClient.newCall(request);        call.enqueue(new Callback() {            @Override            public void onFailure(Call call, IOException e) {            }            @Override            public void onResponse(Call call, Response response) throws IOException {                Log.i("test","text------>"+response.body().string());            }        });复制代码

注意:需要用到FormBody对象,传入表单的键对值,在OkHttp3.0之前使用的是FormEncodingBuilder对象,在3.0之后FormEncodingBuilder已被FormBody取代,同样在post方法传入该对象即可。

本文也参考了关于OkHttp比较优秀的文章,读者如果想深入学习,希望可以参考一下文章:

对OkHttp的封装,可以参考鸿洋大神的这篇文章:

转载地址:http://fwcfm.baihongyu.com/

你可能感兴趣的文章
线程信息的获取和设置
查看>>
Databricks Scala 编程风格指南
查看>>
Tkinter,label内容随多选框变化
查看>>
PHP开发中的数据类型 ( 第3篇 ) :Heaps
查看>>
网络七层协议
查看>>
4种删除Word空白页的小技巧,都是你需要用到的!
查看>>
单服务器MySQL主从复制实践
查看>>
CentOS 7 root口令恢复
查看>>
| 刘知远:让计算机听懂人话
查看>>
苹果收购初创公司Tueo Health,哮喘监测或将应用到Apple Watch
查看>>
CLR存储过程
查看>>
初级运维(一)
查看>>
C语言字符串常用函数学习(一)
查看>>
Lync Server 2010部署与应用(三)---拓扑生成与发布
查看>>
安全摘记1:关于安全与黑客
查看>>
我的友情链接
查看>>
tbox中vector容器的使用
查看>>
一个简单的PHP笔试题
查看>>
firebug重新载入页面获取源码
查看>>
我的友情链接
查看>>