Okhttp正确的使用方法

一、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对象:

1
OkHttpClient client = new OkHttpClient();

2 . 构造Request对象:

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

3 . 将Request封装为Call:

1
Call call = client.newCall(request);

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

1
<strong> 同步调用</strong>
1
2
//同步调用,返回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构建包含键值对类型参数的请求体:

1
2
3
4
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

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

猜你喜欢

转载自www.cnblogs.com/pouqf/p/11251778.html
今日推荐