-
HTTP/2 支持允许对同一主机的所有请求共享同一个socket。
-
连接池可减少请求延迟(如果 HTTP/2 不可用)。
-
透明 GZIP 可缩小下载大小。
-
响应缓存可完全避免重复请求的网络。
OkHttp 3.12.x 及以下的版本支持 Android 2.3+(API 级别 9+)和 Java 7+。同时还要导入okhttp依赖的okio库,而Okio在1.x版本是基于Java实现的,2.x则是Kotlin实现的。这里我的Android版本是2.3,基于Java实现。
在项目中的app目录下的build.gradle文件中添加以下代码
dependencies { // okhttp3的依赖
compile ‘com.squareup.okhttp3:okhttp:3.8.1’
compile ‘com.squareup.okio:okio:1.12.0’}
在AndroidManifest.xml中添加网络权限 :
<uses-permission android:name
《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享
=“android.permission.INTERNET”/>
-
联网请求文本数据
-
大文件下载上传
-
请求图片
=======================================================================
布局文件很简单,只有几个按钮
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity ";
private Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn= (Button) findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try{
getRequest(“http://api.m.mtime.cn/PageSubArea/TrailerList.api”);
}catch(IOException e)
{
e.printStackTrace();
}
}
});
}
/*
get请求
url网络连接
*/
public void getRequest(String url) throws IOException {
//要有一个客户端,类似于要有一个浏览器
OkHttpClient client = new OkHttpClient.Builder()
.build();
//创建请求内容
Request request = new Request.Builder()
.get()
.url(url)
.build();
//用client去创建请求任务
okhttp3.Call task=client.newCall(request);
//异步请求,发起请求可以继续做其他事情(同步请求,发起请求之后要等数据回来)
task.enqueue(new Callback() {
@Override
public void onFailure(okhttp3.Call call, IOException e) {
Log.d(TAG,“onFailure->”+e.toString());
}
@Override
public void onResponse(okhttp3.Call call, Response response) throws IOException {
ResponseBody body=response.body();
Log.d(TAG,“onSuccess->”+body.string());
}
});
}
}
运行结果,点击按钮后,logcat打印出获取的内容
post请求和get请求不同的是post需要一个RequestBody的参数。RequestBody是一个抽象类,分别有FormBody和MultipartBody两个子类。FormBody,用于传输表单类型的参数。MultipartBody则支持多类型的参数传递。
public void post(String url){
//创建一个RequestBody对象
RequestBody body = new FormBody.Builder()
.add(“date”, “2018-08-13”)
.build();
//先有Client
OkHttpClient client = new OkHttpClient.Builder()
.build();
//创建请求
Request request=new Request.Builder()
.url(url)