下面来说说Volley的用法:
1.获取到一个RequestQueue对象,这里拿到的RequestQueue是一个请求队列对象,它可以缓存所有的HTTP请求,然后按照一定的算法并发地发出这些请求。
2.创建一个StringRequest对象用来发出一条HTTP请求,StringRequest的构造函数需要传入三个参数,第一个参数就是目标服务器的URL地址,第二个参数是服务器响应成功的回调,第三个参数是服务器响应失败的回调。
3.将这个StringRequest对象添加到RequestQueue里面
//1.获取一个RequestQueue对象 RequestQueue mRequestQueue = Volley.newRequestQueue(context); //2.创建一个StringRequest对象 StringRequest stringRequest = new StringRequest(Request.Method.POST, "http://www.baidu.com", new Response.Listener<String>() { @Override public void onResponse(String response) { //服务器响应成功,将服务器返回的响应转换成一个Java Bean通过EventBus传递给事件监听处理 EventBus.getDefault().post(new ResultBeen(response)); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { //服务器响应失败,将服务器返回的响应转换成一个Java Bean通过EventBus传递给事件监听处理 EventBus.getDefault().post(new ResultBeen(error.getMessage())); } }); //3.将StringRequest对象添加到RequestQueue里面 mRequestQueue.add(stringRequest);
Java Bean代码:
public class ResultBeen { private int result; private String response; public ResultBeen(String response) { this.response =response; } public int getResult() { return result; } public void setResult(int result) { this.result = result; } public String getResponse() { return response; } @Override public String toString() { return response; } }
事件监听处理:
@DebugLog public void onEventMainThread(ResultBeen event) { this.tv_result.setText(event.getResponse()); }
4.另外,由于Volley是要访问网络的,因此千万不要忘记在你的AndroidManifest.xml中添加如下权限
<uses-permission android:name="android.permission.INTERNET" />