Volley框架GET POST请求

使用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停止的生命周期中 我们取消请求 参考上面的代码 此处我们的请求链接没有给自己添加 最后不要忘了添加连接网络的权限

你可能感兴趣的:(Volley框架GET POST请求)