Android 自己简单封装的Volley

这是我自己简单封装的volley,封装的不好哈,希望大家能多多提提意见,来让我改正!
1. 首先下载个Volley的jar包,拷贝到libs下,同步一下代码
2. 代码 ,注释挺详细的

创建一个Application,方便加入队列

package com.nsv.rolltv;

import android.app.Application;
import android.content.Context;

import com.android.volley.RequestQueue;
import com.android.volley.toolbox.Volley;
import com.nsv.rolltv.service.LocationService;
public class MyApplication extends Application {
    private static RequestQueue queues;
    public static Context mContext;
    @Override
    public void onCreate() {
        super.onCreate();
        mContext = this;
        queues = Volley.newRequestQueue(getApplicationContext());
    }

    public static RequestQueue getHttpQueues() {
        return queues;
    }
}

在清单文件的application标签中加入

android:name=".MyApplication"

网络请求工具类

package com.nsv.rolltv.http;

import android.content.Context;
import android.graphics.Bitmap;
import android.text.TextUtils;
import android.util.Base64;
import android.util.Log;

import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.StringRequest;
import com.nsv.rolltv.MyApplication;
import com.nsv.rolltv.tools.Pref;
import com.nsv.rolltv.tools.ToastUtil;

import org.json.JSONObject;

import java.io.ByteArrayOutputStream;
import java.util.HashMap;

public class MyHttpRequest {
    //private static ProgressDialog progressDialog;

    /**
     * volleyGet请求
     *
     * @param serverUrl      请求链接
     * @param myHttpListener 成功的回调
     */
    public static void sendGetRequest(final String serverUrl, Context context, HashMap<String, String> map, String tag, final MyHttpListener myHttpListener) {
       /* final ProgressDialog progressDialog = new ProgressDialog(context);
        progressDialog.setMessage("正在努力获取信息,请稍候......");
        progressDialog.setTitle("努力争取中");
        progressDialog.setCancelable(false);
        progressDialog.show();*/
            HashMap hashMap;
            if (map == null) {
                hashMap = new HashMap();
            } else {
                hashMap = map;
            }
            hashMap.put("userMark", unionid);
            String url = serverUrl + getParams(hashMap);
            Log.i("MyHttpRequest", "MyHttpRequest: " + url);
            StringRequest getRequest = new StringRequest(Request.Method.GET, url,
                    new Response.Listener<String>() {
                        @Override
                        public void onResponse(String response) {
                            //progressDialog.cancel();
                            Log.i("MyHttpRequest", "返回信息:" + response);
                            if (TextUtils.isEmpty(response) || response == null) {
                                ToastUtil.showToast("抱歉,数据获取为空");
                            } else {
                                //这是一个接口,回调
                                myHttpListener.onSuccess(response);
                            }
                        }
                    },
                    //这是错误的回复,没进行变动
                    new Response.ErrorListener() {
                        @Override
                        public void onErrorResponse(VolleyError error) {
                            //progressDialog.cancel();
                            error.printStackTrace();
                            MyApplication.ShareFlag=true;
                            ToastUtil.showToast("请求超时,请检查网络!");
                        }
                    }
            );
            //创建的MyAppLication继承AppLication,里面放一些全局变量
            getRequest.setTag(tag);
            //volley请求必须放到队列里
            MyApplication.getHttpQueues().add(getRequest);
    }

    /**
     * 发送post请求
     *
     * @param url
     * @param hashMap
     * @param tag
     */
    public static void sendPostRequest(String url, Context context, HashMap hashMap, String tag, final MyPostHttpListener myPostHttpListener) {
        /*final ProgressDialog progressDialog = new ProgressDialog(context);
        progressDialog.setMessage("正在努力获取信息,请稍候......");
        progressDialog.setTitle("努力争取中");
        progressDialog.setCancelable(false);
        progressDialog.show();*/
        String unionid = Pref.getString("unionid", MyApplication.mContext);
        if (hashMap == null) {
            hashMap = new HashMap();
        }
        hashMap.put("userMark", unionid);
        JSONObject jsonObject = new JSONObject(hashMap);
        Log.i("HttpPostMsg", "sendPostRequest: " + url);
        Log.i("HttpPostMsg", "sendPostCanshu: " + jsonObject.toString());
        JsonObjectRequest request = new JsonObjectRequest(Request.Method.POST, url, jsonObject,
                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject jsonObject) {//jsonObject为请求返回的Json格式数据
                        //progressDialog.cancel();
                        Log.i("HttpPostMsg", "onResponse: " + jsonObject.toString());
                        myPostHttpListener.onSuccess(jsonObject);
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError volleyError) {
                        //progressDialog.cancel();
                        MyApplication.ShareFlag=true;
                        ToastUtil.showToast("网络连接超时,请检查网络。");
                    }
                });
        //设置请求的Tag标签,可以在全局请求队列中通过Tag标签进行请求的查找
        request.setTag(tag);
        //将请求加入全局队列中
        MyApplication.getHttpQueues().add(request);
    }

    /**
     * 获取参数
     *
     * @param map 请求的的参数
     * @return
     */
    public static String getParams(HashMap<String, String> map) {
        //下面这两个参数是我们的每次请求必须带的,你可以忽略
        //由于请求的后缀是这样的?jsonstr={"caID":"234234234234","userMark":"w2222"},
        // 所以我只好这样拼接了
        String s = "?jsonstr=";
        JSONObject jsonObject = new JSONObject(map);
        s = s + jsonObject.toString();
        return s;
    }

    /**
     * 接口HttpGet的回调
     */
    public interface MyHttpListener {
        public void onSuccess(String mresult);
    }

    /**
     * 接口HttpPost的回调
     */
    public interface MyPostHttpListener {
        public void onSuccess(JSONObject jsonObject);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值