使用volley框架我们首先需要定义一个消息请求队列 在application中初始化 并对外提供方法 对外开放 可以调用 首先我们看一个application中的代码
import com.android.volley.RequestQueue;
import com.android.volley.toolbox.Volley;
import android.app.Application;
public class MyApplication extends Application {
//我们需要使用volley的jar包
private static RequestQueue queues;
@Override
public void onCreate() {
super.onCreate();
queues=Volley.newRequestQueue(getApplicationContext());
}
//现在我们需要对外部提供一个方法 可以请求到我们的请求队列
public static RequestQueue getHttpQueues(){
return queues;
}
}
上面的代码写完 需要在我们的清单文件application标签中引入
下面只放application中的实现代码
<application
android:name="com.example.volley.MyApplication"
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
最后让我们一起走进探索Volley框架get post请求 在实现的代码中我们提供了两种方法 第一种是StringRequest请求方式,第二种是JsonObjectRequest请求方式 还有一种请求方式是JsonArrayRequest 因为这个和JsonObjectRequest十分相似 我们此处不再贴出代码
import java.util.HashMap;
import java.util.Map;
import org.json.JSONObject;
import com.android.volley.Request.Method;
import com.android.volley.AuthFailureError;
import com.android.volley.Response;
import com.android.volley.Response.Listener;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.StringRequest;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.util.Log;
public class MainActivity extends ActionBarActivity {
//首先需要定义一个全局的消息请求的队列 让我们定义一个application
// 我们知道Volley框架的请求方式一共有三种 分别是StringRequest JsonObjectRequest,JsonArrayRewuest.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//实现get请求
Volley_GET();
Volley_POST();
}
/**
* POST请求
*/
private void Volley_POST() {
String url="";
//首先需要实现的是StringRequest请求数据
StringRequest request=new StringRequest(Method.POST,url, new Listener<String>() {
@Override
public void onResponse(String response) {
//这里我们只是实现一下打印就可以了
Log.i("TAG",response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.i("TAG", error.toString());
}
}){
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> hasMap=new HashMap<String,String>();
hasMap.put("", "");
hasMap.put("", "");
//这样就实现了我们的传参数
return hasMap;
}
};
//给请求设置一个tag
request.setTag("POSTREQUEST");
//添加到消息队列中
MyApplication.getHttpQueues().add(request);
//下面实现一下JsonObjectRequest请求
Map<String, String> hasMap=new HashMap<String,String>();
hasMap.put("", "");
hasMap.put("", "");
JSONObject object=new JSONObject(hasMap);
JsonObjectRequest jSONRequest=new JsonObjectRequest(Method.POST,url, object,new Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
//现在我们只是打印一下请求的内容
Log.i("TAG", response.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.i("TAG", error.toString());
}
});
//设置一个TAG
jSONRequest.setTag("JSONOBJECT");
MyApplication.getHttpQueues().add(jSONRequest);
}
private void Volley_GET() {
String url="";
//首先我们需要的是请求的数据的方式 我们选择StringRequest
StringRequest request=new StringRequest(Method.GET,url, new Listener<String>() {
@Override
public void onResponse(String response) {
//我们可以打印一下请求到的信息
Log.i("TAG", response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.i("TAG", error.toString());
}
});
//设置一个tag
request.setTag("GETREQUEST");
//将这个请求添加到消息的请求队列中
MyApplication.getHttpQueues().add(request);
//对于GET请求 我们不需要参数 所以我们传入一个null
//下面我们再使用JsonObjectRequest进行请求
JsonObjectRequest jSONRequest=new JsonObjectRequest(Method.GET,url, null,new Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
//现在我们只是打印一下请求的内容
Log.i("TAG", response.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.i("TAG", error.toString());
}
});
//设置一个tag
jSONRequest.setTag("JSONREQUEST");
//添加到消息队列
MyApplication.getHttpQueues().add(jSONRequest);
}
//Volley的请求与activity生命周期的一个联动
@Override
protected void onStop() {
super.onStop();
MyApplication.getHttpQueues().cancelAll("JSONREQUEST");//通过给定的tag值将指定的队列全部关闭
}
}
在上面的代码中 我们还实现了取消请求队列 只要是给我们的 请求设置一个tag在当前activity停止的生命周期中 我们取消请求 参考上面的代码 此处我们的请求链接没有给自己添加 最后不要忘了添加连接网络的权限