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请求的总结,当热还有文件的上传和下载等。


  

 

posted @ 2019-03-31 20:54  云林  阅读(313)  评论(0编辑  收藏  举报