刚刚接触框架不知何从下手,我结合郭霖大神的博客以及volley源码进行学习,终于掌握点基本。
郭霖的博客地址:https://blog.youkuaiyun.com/guolin_blog/article/details/17482095
volley源码:https://github.com/google/volley
1.Volley简介
volley的英文意思为‘群发’、‘迸发’。Volley是2013年谷歌官方发布的一款Android平台上的网络通信库。Volley非常适合一些数据量不大,但需要频繁通信的网络操作。使用Volley进行网络开发可以使我们的开发效率得到很大的提升,而且性能的稳定性也比较高。但是Volley不适用于文件的上传下载操作。
2.Volley下载
网上查找,我之前找了好久,没有找到满意的。直接下载郭霖的:http://download.youkuaiyun.com/detail/sinyu890807/7152015,他的需要积分,没有积分的可以直接淘宝上面购买。然后导入到android studio项目中去。
3. StringRequest的用法
三大步骤:1.创建一个RequestQueue消息队列对象。
2. 创建一个StringRequest对象。
3. 将StringRequest对象添加到RequestQueue里面。
如图所示:
//get请求
bt_get_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//创建一个请求队列
RequestQueue requestQueue= Volley.newRequestQueue(MainActivity.this);
//创建一个请求
String url="https://www.baidu.com/";
StringRequest stringRequest=new StringRequest(url, new Response.Listener<String>() {
//正确接受数据回调
@Override
public void onResponse(String s) {
tv_volley_result.setText(s);
}
}, new Response.ErrorListener() { //发生异常后的监听回调
@Override
public void onErrorResponse(VolleyError volleyError) {
tv_volley_result.setText("加载失败"+volleyError);
}
});
//将创建的请求添加请求队列
requestQueue.add(stringRequest);
}
});
POST请求如图所示:
//post请求
bt_post_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//创建一个消息队列
RequestQueue requestQueue=Volley.newRequestQueue(MainActivity.this);
String url="https://www.baidu.com/";
//创建一个POST请求
StringRequest stringRequest=new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
@Override
public void onResponse(String s) {
tv_volley_result.setText(s);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
tv_volley_result.setText("加载失败"+volleyError);
}
}){
@Override
protected Map<String, String> getParams() throws AuthFailureError {
//参数数据
Map<String, String> map=new HashMap<String, String>();
// map.put("valuel","paraml");
return map;
}
};
//将POST请求添加请求队列
requestQueue.add(stringRequest);
}
});
4. JsonRequest的用法
JsonRequest的用法类似于StringRequest,JsonRequest也是继承自Request类的,不过由于JsonRequest是一个抽象类,因此我们无法直接创建它的实例,那么只能从它的子类入手了。JsonRequest有两个直接的子类,JsonObjectRequest和JsonArrayRequest。
如图所示:
//请求json数据
bt_json_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
RequestQueue requestQueue=Volley.newRequestQueue(MainActivity.this);
String url="http://www.weather.com.cn/data/sk/101010100.html ";
JsonObjectRequest jsonObjectRequest=new JsonObjectRequest(url, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject jsonObject) {
tv_volley_result.setText(jsonObject.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
tv_volley_result.setText("请求失败"+volleyError);
}
});
requestQueue.add(jsonObjectRequest);
}
});
中国天气网提供的一个查询天气信息的接口:http://www.weather.com.cn/data/sk/101010100.html
总结:由于Volley内部是怎么进行操作的,我们并不知道,我们使用Volley的时候按照那三步走就可以啦!