OkHttp的初级使用

在Okhttp之前有android-async-http它的内部使用HttpClient (google在android6.0已经移除了HttpClient),还有国内的Xutils最新的额Xutils3

还有2013年谷歌大会退出的Velloy 缺点是上传和下载大文件事它的弱项

Okhttp内部依赖一个square公司出品的网络请求的库(okio)现在已经被google使用在android的源码上面,可见其功能的强大

OKHTTP的简介:

 

okhttp是一款高效的HTTP客户端,支持连接同一地址的链接共享同一个socket,
通过链接池来减小相应的延迟,还有透明的GZIP压缩,请求缓存等优势,
其核心主要有路由,连接协议,拦截器,代理,安全性认证,连接池以及网络的适配,
拦截器主要是指添加,一处,或者转换请求,或者回应的头部信息

 

OKhttp支持的主要的功能:

1、联网 请求文本数据(GET,POST)

2、支持大问价的上传

3、大文件的下载

4、请求图片

 

个人总结使用okhttp的基本步骤:

/**
 * 步骤:
 * 1,得到OkHttpClient对象
 * 2,得到一个请求  Requst请求
 * 3,使用OkHttpClient对象 调用newCall()方法  将请求Requst请求转成Call任务
 * 4,执行Call任务 (同步  异步)
 *
 * 更新Ui需要传递到主线程
 */															
在build.gradle文件里面添加的依赖
compile 'com.squareup.okhttp3:okhttp:3.4.2'
 
okHttp的get用法简单的Demo:
 
OkHttpClient okHttpClient = new OkHttpClient();  final Request request = new Request.Builder() .url("http://interfaces.ziroom.com/index.php?_p=api&_a=carousel") .addHeader("User-Agent","Apache-HttpClient/UNAVAILABLE (java 1.4)") .build();  final Call call = okHttpClient.newCall(request);  //2,同步请求  // new Thread(){ // @Override // public void run() { // super.run(); // try { // Response response = call.execute(); // if(response.isSuccessful()){ // Log.e("AAA","==请求成功=>"+Thread.currentThread().getName()); // Log.e("AAA","==请求成功信息=>"+response.message()); // Log.e("AAA","==请求成功码=>"+response.code()); // Log.e("AAA","==请求成功数据=>"+response.body().string()); // Log.e("AAA","==请求成功数据总长度=>"+response.body().contentLength()); // // } // } catch (IOException e) { // e.printStackTrace(); // } // } // }.start();    //1,执行异步任务  //note:请求结果在子线程  //note:请求数据 执行一遍是有数据的 再次执行无数据  call.enqueue(new Callback() { @Override  public void onFailure(Call call, IOException e) { //失败   } @Override  public void onResponse(Call call, Response response) throws IOException { //成功  if(response!=null){ Log.e("AAA","==请求成功=>"+Thread.currentThread().getName());  Log.e("AAA","==请求成功信息=>"+response.message());  Log.e("AAA","==请求成功码=>"+response.code());  Log.e("AAA","==请求成功数据=>"+response.body().string());  Log.e("AAA","==请求成功数据=>"+response.body().string());  Log.e("AAA","==请求成功数据总长度=>"+response.body().contentLength());   } } });

 

 

 

 
 
okHttp的Post请求:
 
OkHttpClient okHttpClient = new OkHttpClient();  //FormEncodingBuilder body = new FormEncodingBuilder();//这是OkHttp 的用法 3有所改变  FormBody.Builder builder = new FormBody.Builder();  builder.add("pageNo","1");  builder.add("pageSize","20");  builder.add("serialIdes","2143,3404");  builder.add("v","4.0.0");  FormBody body = builder.build();   /* body.add("pageNo","1");这是OkHttp 的用法 3有所改变  body.add("pageSize","20");  body.add("serialIds","2143,3404");  body.add("v","4.0.0");*/   Request request = new Request.Builder() .url("http://mrobot.pcauto.com.cn/v2/cms/channels/1?") .post(body) .build();   Call call = okHttpClient.newCall(request);  //2,同步请求  // new Thread(){ // @Override // public void run() { // super.run(); // try { // Response response = call.execute(); // if(response.isSuccessful()){ // Log.e("AAA","==请求成功=>"+Thread.currentThread().getName()); // Log.e("AAA","==请求成功信息=>"+response.message()); // Log.e("AAA","==请求成功码=>"+response.code()); // Log.e("AAA","==请求成功数据=>"+response.body().string()); // Log.e("AAA","==请求成功数据总长度=>"+response.body().contentLength()); // // } // } catch (IOException e) { // e.printStackTrace(); // } // } // }.start();   // //1,执行异步任务  //note:请求结果在子线程  //note:请求数据 执行一遍是有数据的 再次执行无数据  call.enqueue(new Callback() { @Override  public void onFailure(Call call, IOException e) { } @Override  public void onResponse(Call call, Response response) throws IOException { //成功  if(response!=null){ Log.e("AAA","==请求成功=>"+Thread.currentThread().getName());  Log.e("AAA","==请求成功信息=>"+response.message());  Log.e("AAA","==请求成功码=>"+response.code());  Log.e("AAA","==请求成功数据=>"+response.body().string());  Log.e("AAA","==请求成功数据总长度=>"+response.body().contentLength());   } } }); 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值