网络
1 Volley
Volley 是 Google 推出的 Android 异步网络请求框架和图片加载框架。在 Google I/O 2013 大会上发布。
主页: https://android.googlesource.com/platform/frameworks/volley/
应用场景:数据类小,频繁的网络操作。大数据会出现OOM
-
特点:
- 通信更快,更简单
- 支持网络请求的排序,优先级处理
- 支持网络请求的缓存
- 多级别的取消请求
- 扩展性强
-
注意事项:
- 如果自己编译Volley的话,compileSdkVersion需要<=22,这是因为在Android6.0中Google移除了httpClient相关的API
- Volley仅适合用于通信频繁数据量小的网络操作
- 大数据量的网络操作并不适合Volley
-
生成的jar文件地址:
- \build\intermediates\bundles\release\classes.jar
-
生成的aar文件地址:
- \build\outputs\aar
-
工作原理图
-
使用步骤:
//1. 创建请求队列
RequestQueue requestQueue = Volley.newRequestQueue(this);
//2. 创建StringRequest
StringRequest stringRequest = new StringRequest("http://www.baidu.com", new StringListener(), new MyErrorListener());
//3. 把请求加到队列当中
requestQueue.add(stringRequest);
private class StringListener implements Response.Listener<String> {
@Override
public void onResponse(String s) {
tv.setText(s);
}
}
private class MyErrorListener implements Response.ErrorListener {
@Override
public void onErrorResponse(VolleyError volleyError) {
Toast.makeText(MainActivity.this,volleyError.toString(),0).show();
}
}
2 Okhttp
-
特点:
- 支持HTTP/2 和 SPDY
- 默认支持 GZIP 降低传输内容的大小
- 支持网络请求的缓存
- 当网络出现问题时,自动重试一个主机的多个 IP 地址
-
请求流程:
配置: compile ‘com.squareup.okhttp3:okhttp:3.2.0’
-
使用步骤:
//1. 创建OkHttpClient对象
OkHttpClient client = new OkHttpClient();
//2. 创建Request对象
Request request = new Request.Builder()
.url("http://www.baidu.com")
.build();
//3. 添加Request对象到OkHttpClient对象中并执行请求
//同步操作,高版本会报网络在主线程异常
//Response response = client.newCall(request).execute();
//异步网络操作
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
showToastInAnyThread("网络错误");
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String result = response.body().string();
showToastInAnyThread(result);
}
});
}
public void showToastInAnyThread(final String text){
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this,text,0).show();
}
});
} -
因为原生OkHttp的使用比较复杂,有一个包装过的工具项目okhttp-utils使用非常简单
- 添加依赖: compile ‘com.zhy:okhttputils:2.3.8’
- 工具类简介:https://github.com/hongyangAndroid/okhttp-utils
-
编写步骤:
OkHttpUtils.get()
.url("http://www.baidu.com")
.build()
.readTimeOut(3000)//设置读取超时时间
.execute(new StringCallback() {
@Override
public void onError(Call call, Exception e) {
Toast.makeText(MainActivity.this,e.toString(),0).show();
}
@Override
public void onResponse(String s) {
Toast.makeText(MainActivity.this,s,0).show();
}
});