Okhttp使用java
2019-03-31-20:48:45 云林原创android
1、Okhttp介绍:git
一、Okhttp开源库出自Square公司,是一个优秀的网络请求框架,它基于httpURLConnectiond的封装,支持get/post请求,文件的上传和下载,图片的加载,让写法更加简单,能够处理更加复杂的网络请求。github
二、Okhttp但是实现的功能web
三、Okhttp的特色缓存
2、Okhttp请求准备websocket
##一、OkHttp的依赖的引入网络
Module的gradle中添加框架
--------------------------------------------------------异步
compile 'com.squareup.okhttp3:okhttp:3.5.0'
--------------------------------------------------------
而后同步一下项目便可。
okhttp有本身的官网,可在官网上查询最新依赖,官网网址:OKHttp官网
##二、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>
3、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 来处理
4、OkHttp进行Post请求提交键值对:
Post 请求和进行 Get 请求很相似。
1 、获取OkHttpClient对象:
二、使用FormBody构建包含键值对类型参数的请求体:
FormBody formBody = new FormBody.Builder() .add("username", "admin") .add("password", "123") .build();
三、 构建Request,将FormBody做为Post方法的参数传入
Request request = new Request.Builder() .url("http://www.jianshu.com/") .post(formBody) .build();
四、将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请求的总结,当热还有文件的上传和下载等。