3.Volley
Volley是Google官方出的一套小而巧的异步请求库,该框架封装的扩展性很强,支持HttpClient、HttpUrlConnection, 甚至支持OkHttp,而且Volley里面也封装了ImageLoader,所以如果你愿意你甚至不需要使用图片加载框架,不过这块功能没有一些专门的图片加载框架强大,对于简单的需求可以使用,稍复杂点的需求还是需要用到专门的图片加载框架。Volley也有缺陷,比如不支持post大数据,所以不适合上传文件。不过Volley设计的初衷本身也就是为频繁的、数据量小的网络请求而生。
使用案例:
进行了以下四个步操作:
创建一个RequestQueue对象。
创建一个StringRequest对象。
将StringRequest对象添加到RequestQueue里面。
清单文件加入网络访问权限
StringRequest stringRequest = new StringRequest(“http://www.baidu.com”,
new Response.Listener() {
@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);
}
});
加入队列
mQueue.add(stringRequest);
加入网络权限
请求百度网址,你会在Logcat打印出消息(消息是网页代码,不用在意)
你也可以加上自己想传的参数,例如这样:
StringRequest stringRequest = new StringRequest(Method.POST, url, listener, errorListener) {
@Override
protected Map
Map
map.put(“params1”, “value1”);
map.put(“params2”, “value2”);
return map;
}
};
返回错误类型有以下几种:
AuthFailureError:如果在做一个HTTP的身份验证,可能会发生这个错误。
NetworkError:Socket关闭,服务器宕机,DNS错误都会产生这个错误。
NoConnectionError:和NetworkError类似,这个是客户端没有网络连接。
ParseError:在使用JsonObjectRequest或JsonArrayRequest时,如果接收到的JSON是畸形,会产生异常。
SERVERERROR:服务器的响应的一个错误,最有可能的4xx或5xx HTTP状态代码。
TimeoutError:Socket超时,服务器太忙或网络延迟会产生这个异常。默认情况下,Volley的超时时间为2.5秒。如果得到这个错误可以使用RetryPolicy。
问题可以根据错误的类型查询相关文章
4.Retrofit
Retrofit是Square公司出品的默认基于OkHttp封装的一套RESTful网络请求框架,RESTful是目前流行的一套api设计的风格, 并不是标准。Retrofit的封装可以说是很强大