Android应用开发之okhttp-utils的封装之okhttp的使用
白羽 2018-08-10 来源 :网络 阅读 1153 评论 0

摘要:本文将带你了解Android应用开发之okhttp-utils的封装之okhttp的使用,希望本文对大家学Android有所帮助

        本文将带你了解Android应用开发之okhttp-utils的封装之okhttp的使用,希望本文对大家学Android有所帮助


HTTP是现代应用的网络。这就是我们如何交换数据和媒体。让你的东西做HTTP有效负载的速度和节省带宽。
 
okhttp是HTTP客户端的有效默认:
 

HTTP 2支持允许所有请求相同的主机共享一个插座。
连接池减少请求的延迟(如HTTP / 2不可用)。
透明的gzip收缩下载大小。
响应缓存避免完全重复要求网络。

 
okhttp坚守当网络是麻烦:它会悄悄地从常见的连接问题恢复。如果你的服务有多个IP地址okhttp将备用地址,如果第一次连接失败。这是IPv4向IPv6必要冗余的数据中心托管服务。okhttp发起新的连接特点现代TLS(SNI,alpn),落回TLS 1如果握手失败。
 
使用okhttp是容易的。它的请求/响应的API的设计与流畅的建设者和不变性。它同时支持同步和异步调用阻塞调用回调函数。
 
okhttp支持Android 2.3及以上。对于java,最低要求是1.7。
 
 
 
最近半年来身边开发的朋友越来越多的提到OkHttp,上谷歌百度一下,确实OkHttp成了时下最火的HTTP框架。现在把自己整理的官方教程分享给大家,希望给初学者带来帮助。
 
主要包含了一些常见的操作:HTTP GET, HTTP POST,POST单个和多个文件上传),图片加载等。如图: 
        
GET请求
 
 
Java代码  OkHttpUtils.get().url("//www.baidu.com").  id(100).build()              .execute(new MyStringCallback());  POST请求  OkHttpUtils.get().url("//www.baidu.com").
id(100).build()
            .execute(new MyStringCallback());
POST请求

 
 
Java代码  public void postHttp() {        OkHttpUtils.post().url(url).addParams("q","test")              .addParams("showapi_appid","11548")              .addParams("showapi_timestamp","201601012135954")              .addParams("showapi_sign","bb1d15ab7ce646ec87cc89d684ca4bcb")              .build()              .execute(new MyStringCallback());    }  public void postHttp() {
      OkHttpUtils.post().url(url).addParams("q","test")
            .addParams("showapi_appid","11548")
            .addParams("showapi_timestamp","201601012135954")
            .addParams("showapi_sign","bb1d15ab7ce646ec87cc89d684ca4bcb")
            .build()
            .execute(new MyStringCallback());
  }


 
文件上传

 
Java代码     /**     * 提交单个文件     */      OkHttpUtils.postFile().url(url).file(file).build()              .execute(new MyStringCallback());    /***     * post表单形式上传多个文件     * @param view     */     public void postFile() {        String path4 = "/storage/emulated/legacy/Tencent/MobileQQ/qbiz/html5/2312/sqimg.qq.com/"              + "qq_product_operations/dyzx_folder/images/bg.jpg";        File file4 = new File(path4);        Map params = new HashMap();        params.put("key", "value");        params.put("key", "value");        OkHttpUtils.post().addFile("filedata0","bg.jpg", file4)              .addFile("filedata1", "bg.jpg",file4).url(url).params(params)              .build()              .execute(new MyStringCallback());  }     /**
    * 提交单个文件
    */
    OkHttpUtils.postFile().url(url).file(file).build()
            .execute(new MyStringCallback());

/***
    * post表单形式上传多个文件
    * @param view
    */
   public void postFile() {
      String path4 = "/storage/emulated/legacy/Tencent/MobileQQ/qbiz/html5/2312/sqimg.qq.com/"
            + "qq_product_operations/dyzx_folder/images/bg.jpg";
      File file4 = new File(path4);
      Map params = new HashMap();
      params.put("key", "value");
      params.put("key", "value");
      OkHttpUtils.post().addFile("filedata0","bg.jpg", file4)
            .addFile("filedata1", "bg.jpg",file4).url(url).params(params)
            .build()
            .execute(new MyStringCallback());
}
 

 
显示图片

 
Java代码  /***      * 加载图片      *       * @param view      */      public void getImage(View view) {          String url = "//avatar.csdn.net/8/6/0/1_dickyqie.jpg";          OkHttpUtils.get().url(url).tag(this).build().connTimeOut(20000)                  .readTimeOut(20000).writeTimeOut(20000)                  .execute(new BitmapCallback() {                      @Override                      public void onError(Call call, Exception e, int id) {                          _mTextView.setText("onError:" + e.getMessage());                      }                        @Override                      public void onResponse(Bitmap bitmap, int id) {                          mImageView.setImageBitmap(bitmap);                      }                  });      }  /***
  * 加载图片
  * 
  * @param view
  */
 public void getImage(View view) {
  String url = "//avatar.csdn.net/8/6/0/1_dickyqie.jpg";
  OkHttpUtils.get().url(url).tag(this).build().connTimeOut(20000)
    .readTimeOut(20000).writeTimeOut(20000)
    .execute(new BitmapCallback() {
     @Override
     public void onError(Call call, Exception e, int id) {
      _mTextView.setText("onError:" + e.getMessage());
     }

     @Override
     public void onResponse(Bitmap bitmap, int id) {
      mImageView.setImageBitmap(bitmap);
     }
    });
 }
 

 
Post JSON

 
Java代码  /***      *       *       * 提交一个Gson字符串到服务器端,注意:传递JSON的时候,不要通过addHeader去设置contentType,      * 而使用.mediaType(MediaType.parse("application/json; charset=utf-8")).。      *       * @param view      */      public void postString(View view) {          OkHttpUtils.postString().url(url)                  .content(new Gson().toJson(new Bean("zqq", "123")))                  .mediaType(MediaType.parse("application/json; charset=utf-8"))                  .build().execute(new MyStringCallback());      }  /***
  * 
  * 
  * 提交一个Gson字符串到服务器端,注意:传递JSON的时候,不要通过addHeader去设置contentType,
  * 而使用.mediaType(MediaType.parse("application/json; charset=utf-8")).。
  * 
  * @param view
  */
 public void postString(View view) {
  OkHttpUtils.postString().url(url)
    .content(new Gson().toJson(new Bean("zqq", "123")))
    .mediaType(MediaType.parse("application/json; charset=utf-8"))
    .build().execute(new MyStringCallback());
 }
 
AndroidManifest.xml配置
 
 
 
Html代码                                      
    
    
    
    


Android Studio
compile 'com.zhy:okhttputils:2.6.2'



Eclipse
下载最新jar:okhttputils-2_6_2.jarokhttp.jar okio.jar 注:点击可下载,



工具类代码太多未完全给出,直接下载即可调试或使用。

     

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之Android频道!

本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程