首页 > 学院 > 开发设计 > 正文

OKhttp框架--01

2019-11-08 00:05:25
字体:
来源:转载
供稿:网友

1、简介

1、OKHttp是Square公司推出的一款高效的HTTP客户端,支持同一个地址的连接共享同一个Socket、GZip压缩、请求缓存等等

2、OkHttp内部依赖Okio,Okio已经被谷歌使用在了android源码上,相当强大

3、android-async-http内部使用HttpClient,但是android6.0版本中已经删除了HttpClient的API,所以android-async-http已经过时。

2、OKHttp主要功能

1、请求文本数据 2、大文件上传 3、大文件下载 4、请求图片

3、使用方法

3.1 导入OkHttp:

compile 'com.squareup.okhttp3:okhttp:3.6.0'

3.2 get请求:

//1、创建OkHttpClient客户端对象 OkHttpClient okHttpClient = new OkHttpClient(); //2、创建Request对象,封装请求参数 Request request = new Request.Builder().url(urlPath).build(); //3、将请求封装成了任务 Call call = okHttpClient.newCall(request); //4、将任务加入调度队列 call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { } //onResponse方法不在UI线程,所以需要handler来更新UI @Override public void onResponse(Call call, Response response) throws IOException { if (response.isSuccessful()) { //使用handler发送消息来更新UI String result = response.body().string(); Message msg = handler.obtainMessage(); msg.obj = result; handler.sendMessage(msg); } } }); /* Call(任务)有两个方法: execute(): 立即执行请求,阻塞直到响应可以被处理。 enqueue(): 以异步的方式去执行请求,将call加入调度队列,等待任务执行完成,任务完成后可在 Callbacl中的onResponse方法中得到结果。 */

3.3 post请求:

//1、创建OkHttpClient客户端对象 OkHttpClient okHttpClient = new OkHttpClient(); //2、创建请求体对象,数据类型为json MediaType mediaType = MediaType.parse("application/json; charset=utf-8"); RequestBody requestBody = RequestBody.create(mediaType, ""); //3、创建Request对象,封装请求参数 Request request = new Request.Builder().post(requestBody).url(urlPath).build(); //4、将任务加入调度队列 okHttpClient.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { if (response.isSuccessful()) { String result = response.body().string(); Message msg = handler.obtainMessage(); msg.obj = result; handler.sendMessage(msg); } } });

3、OkHttp封装

https://github.com/hongyangAndroid/okhttputils


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表