1、基本用法
1.1 导包
gradle方式 需要导入
compile 'com.squareup.okhttp3:okhttp:3.3.0'
1.2 基本用法
//默认方式的OkHttpClient
OkHttpClient okHttpClient = new OkHttpClient();
//自定义OkHttpClient
OkHttpClient okHttpClientCus = new OkHttpClient.Builder()
.connectTimeout(10, TimeUnit.SECONDS) //连接超时
.readTimeout(20, TimeUnit.SECONDS)
.cookieJar() //cookie管理
.cache() //自定义缓存目录
.proxy() //设置代理
.sslSocketFactory() //设置ssl
.build();
//RequestBody 1 post上传的文件、json数据等
String body = "";
//Content-Type参数
MediaType JSON = MediaType.parse("application/json; charset=utf-8");
RequestBody requestBodyFile = RequestBody.create(JSON, body);
//RequestBody 2 post上传的参数。
RequestBody requestBody = new FormBody.Builder()
.add("键", "值")
.build();
//RequestBody 3 post上传多文件
RequestBody requestBodyMul = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("键", "值")
.addFormDataPart("image", "abc.jpg", RequestBody.create(MEDIA_TYPE_PNG, new File("/abc.jpg")))
.build();
Request.Builder requestBuilder = new Request.Builder();
requestBuilder.url("http://www.baidu.com")
//get方式
.get()
//post方式 需要RequestBody
.post(requestBody)
.addHeader("键", "值");
Request request = requestBuilder.build();
Call mcall= okHttpClient.newCall(request);
//异步方式
mcall.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
Log.i("-----", "onFailure==>" + e.getMessage());
}
@Override
public void onResponse(Call call, Response response) throws IOException {
Log.i("-----", "onResponse==>" + response.toString());
}
});