一、作用
一般的get请求
一般的post请求
基于Http的文件上传
文件下载
加载图片
支持请求回调,直接返回对象、对象集合
支持session的保持
二、导包
导入okhttp3.6.0和okio包
三、get和post请求
1、get请求
1) OkHttpClient:新建一个OkHttpClient实例,用于处理请求。
2) Request:构建请求参数,如url,请求方式,请求参数,header等。
3) Call:生成一个具体请求实例,相当于将请求封装成了任务;两种方式:
①、call.execute(),非异步方式,会阻塞线程,等待返回结果。
②、call.enqueue(Callback),异步方式。里面有onFailure()和onResponse()方法只能运行在非主线程,不能进行UI操作。可以用handler去操作UI界面。
4) Response:结果响应。
response.body().string()–>返回字符串(小文档);
.bytes()–>返回二进制字节数组
.byteStream()–>返回InputStream(超过1M的用这个)
2、Post请求
同上面差不多,但需要增加RequestBody(存放json数据)RequestBody.create(Json,json);或FormBody.Builder(存放表单)FormBody.Builder().add(“key”,”name”);来存储请求的参数信息,在Request.Builder增加post(RequestBody)的调用。
package com.example.myapplication;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import java.io.IOException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import okhttp3.Call;
import okhttp3.Callback;