Android主流网络请求框架
1、Volley框架
特点:
- 适用于频繁请求而每次请求数据量不会很大;
- 在请求的基础上做了磁盘缓存;
- 防止多次相同请求浪费资源;
- 提供String、Json、图片异步下载;
- 网络请求的优先级处理;
- 图片请求无需担心生命周期问题。
使用:
-
首先,通过Volley的静态方法new一个请求队列
1 RequestQueue mQueue = Volley.newRequestQueue(context);
-
假如我们创建一个StringRequest实例(Volley提供,StringRequest、ImageRequest、JsonRequest。)
StringRequest stringRequest = new StringRequest("http://www.baidu.com", new Response.Listener<String>() { @Override public void onResponse(String response) { Log.d("TAG", response); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { Log.e("TAG", error.getMessage(), error); } });
-
将XXXRequest对象添加进队列中
mQueue.add(stringRequest);
-
调用RequestQueue的start方法就可以开始一条网络请求了
mQueue.start();
-
当然我们可以设置请求的方式:
StringRequest stringRequest = new StringRequest(Method.POST, url, listener, errorListener);
-
设置提交的参数:
StringRequest stringRequest = new StringRequest(Method.POST, url, listener, errorListener) { @Override protected Map<String, String> getParams() throws AuthFailureError { Map<String, String> map = new HashMap<String, String>(); map.put("params1", "value1"); map.put("params2", "value2"); return map; } };
https://www.cnblogs.com/caichongyang/articles/4399790.html
2、OkHttp框架
简而言之,OkHttp充当一个高效的HTTP客户端,它能像浏览器一样方便的发送HTTP请求、处理HTTP响应。并且,OkHttp具有一系列设计优良的API,具有简单易用的特点。
对于网络加载库,最常见的肯定就是http get请求了,比如获取一个网页的内容。
//创建okHttpClient对象
OkHttpClient mOkHttpClient = new OkHttpClient();
//创建一个Request
final Request request = new Request.Builder()
.url("https://github.com/hongyangAndroid")
.build();
//new call
Call call = mOkHttpClient.newCall(request);
//请求加入调度
call.enqueue(new Callback()
{
@Override
public void onFailure(Request request, IOException e)
{
}
@Override
public void onResponse(final Response response) throws IOException
{
//String htmlStr = response.body().string();
}
});
- 以上就是发送一个get请求的步骤,首先构造一个Request对象,参数最起码有个url,当然你可以通过Request.Builder设置更多的参数比如:
header
、method
等。 - 然后通过request的对象去构造得到一个Call对象,类似于将你的请求封装成了任务,既然是任务,就会有
execute()
和cancel()
等方法。 - 最后,我们希望以异步的方式去执行请求,所以我们调用的是call.enqueue,将call加入调度队列,然后等待任务执行完成,我们在Callback中即可得到结果。
https://wuyinlei.blog.csdn.net/article/details/50579564?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-3.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-3.control