zoukankan      html  css  js  c++  java
  • Okhttp使用

    Okhttp使用


     

    2019-03-31-20:48:45          云林原创


     

    一、Okhttp介绍:

    1、Okhttp开源库出自Square公司,是一个优秀的网络请求框架,它基于httpURLConnectiond的封装,支持get/post请求,文件的上传和下载,图片的加载,让写法更加简单,可以处理更加复杂的网络请求。

    2、Okhttp可是实现的功能

    • get/post同步、异步请求
    • 文件的上传,下载
    • 图片的加载
    • 请求回调等

    3、Okhttp的特点

    • 响应缓存
    • 支持GZIP压缩
    • 支持websocket
    • 多IP切换
    • 减少连接池请求延时

    二、Okhttp请求准备

    ##1、OkHttp的依赖的引入

    Module的gradle中添加

    --------------------------------------------------------

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

    --------------------------------------------------------

    然后同步一下项目即可。

    okhttp有自己的官网,可在官网上查询最新依赖,官网网址:OKHttp官网

    ##2、OkHttp中添加权限

        <uses-permission android:name="android.permission.INTERNET"></uses-permission>
        <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>

    三、OkHttp进行Get请求

    Get 请求只需要四步即可完成:

    1 . 获取OkHttpClient对象:

    OkHttpClient client = new OkHttpClient();
    

    2 . 构造Request对象:

    Request request = new Request.Builder()
                    .get()
                    .url("https:www.baidu.com")
                    .build();
    

    3 . 将Request封装为Call:

    Call call = client.newCall(request);
    

    4 . 根据需要调用同步或者异步请求方法  

     同步调用
    //同步调用,返回Response,
    Response response = call.execute();
    

      异步调用

    //异步调用,并设置回调函数
    call.enqueue(new Callback() {
          //请求失败调用
        @Override
        public void onFailure(Call call, IOException e) {
            Toast.makeText(OkHttpActivityDemo.this, "get failed", Toast.LENGTH_SHORT).show();
        }
        //请求成功调用
        @Override
        public void onResponse(Call call, final Response response) throws IOException {
            final String res = response.body().string();
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    Toast.makeText(OkHttpActivityDemo.this, "get success", Toast.LENGTH_SHORT).show();
              } 
         });
        } 
    });

    注意:

    在异步调用时,回调函数是在子线程,不能在子线程更新UI,需要借助于 runOnUiThread() 方法或者 Handler 来处理

    四、OkHttp进行Post请求提交键值对:

      Post 请求和进行 Get 请求很类似。

    1 、获取OkHttpClient对象:

     OkHttpClient client = new OkHttpClient();

    2、使用FormBody构建包含键值对类型参数的请求体:

    FormBody formBody = new FormBody.Builder()
                    .add("username", "admin")
                    .add("password", "123")
                    .build();
    

    3、 构建Request,将FormBody作为Post方法的参数传入

    Request request = new Request.Builder()
                    .url("http://www.jianshu.com/")
                    .post(formBody)
                    .build();

    4、将Request封装为Call

    Call call = client.newCall(request);
    

    5 . 调用请求,重写回调方法

    call.enqueue(new Callback() {
        @Override
        public void onFailure(Call call, IOException e) {
            Toast.makeText(OkHttpActivityDemo.this, "Post Failed", Toast.LENGTH_SHORT).show();
        }
    
        @Override
        public void onResponse(Call call, Response response) throws IOException {
            final String res = response.body().string();
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                     Toast.makeText(OkHttpActivityDemo.this, "Post success", Toast.LENGTH_SHORT).show();
                }
            });
        }
    });

    五、后记

    以上就是 OkHttp 常用get和set请求的总结,当热还有文件的上传和下载等。

    
    

      

  • 相关阅读:
    HTML/网站一键打包APK工具(html网页打包安卓APP应用)
    四款最好用的html转苹果APP免上架免签名打包在线生成工具
    ios11,弹出层内的input框光标错位
    前端进阶小知识
    html数据交互小知识
    H5特殊情况解决方案
    H5个人不常用但感觉很重要的东西
    H5小知识
    Java SE 8 Programmer复习小结
    JSP页面中onSubmit方法不执行
  • 原文地址:https://www.cnblogs.com/ITyunlin/p/10633094.html
Copyright © 2011-2022 走看看