当前位置: 代码迷 >> Android >> 怎么封装一个volly的网络请求方法
  详细解决方案

怎么封装一个volly的网络请求方法

热度:12   发布时间:2016-04-28 01:38:17.0
如何封装一个volly的网络请求方法
本帖最后由 zqq8419792 于 2015-03-31 09:24:16 编辑
我先使用人家的办法,重写了一个方法,通过map提交,json返回、
这个方法可以正常使用。调用过程如:

RequestQueue mQueue = Volley.newRequestQueue(getBaseContext());
        Request<JSONObject> request = new HuaguHttpPost(Method.POST, "http://192.168.1.118/1.php", new Response.Listener<JSONObject>() {

@Override
public void onResponse(JSONObject response) {
Log.i("json", response.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// TODO Auto-generated method stub
Log.i("json",error.getMessage(),error);
}
}, map);
        
        mQueue.add(request);


问题在于:
我想把整个http请求封装成一个方法,简单调用,于是我写了一个函数,如下:

public function Func{
        public static JSONObject json;
public static JSONObject postMap(Map<String, String> map, final Activity act){
RequestQueue mQueue = Volley.newRequestQueue(act);
        Request<JSONObject> request = new HuaguHttpPost(Method.POST, Constant.ServerURL, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
json = response;
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.i("json",error.getMessage(),error);
try {
json = new JSONObject().put("error", 1);
} catch (JSONException e) {
e.printStackTrace();
}
Toast.makeText(act, "服务器连接错误,请检查网络连接", Toast.LENGTH_LONG).show();
}
}, map);
        
        mQueue.add(request);
               //如果在这里输出json.tostring()  一定会报空指针。
return json;//可是这里好像没有返回。
}
}


请问  怎样写才可以让外部调用能接收到json呢?为什么我在最下面写log输出的时候会空指针呢?
我在类下意见声明了json,不知道为何还是这样
求java大牛 
------解决思路----------------------
我c前也封装过,不过,能使用的情况有限,所以就放弃了。
------解决思路----------------------
JsonObjectRequest request = new JsonObjectRequest(Request.Method.POST,
url, object, new Listener<JSONObject>() {

@Override
public void onResponse(JSONObject response) {
if (Constants.DEBUG) {
Log.i("yjz", "获取验证码success:" + response);
try {
boolean isBizSuccess = response.getBoolean("isBizSuccess");
if (isBizSuccess) {
JSONObject data = response.getJSONObject("data");
if (null != data) {
boolean isSend = data.getBoolean("isSend");
if (isSend) {
showErrorDialog("验证码已发送");
mc = new MyCount(120000, 1000);
mc.start();
}
}
} else {
showErrorDialog(response.getString("bizErrorMsg"));
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}
}, new Response.ErrorListener() {

@Override
public void onErrorResponse(VolleyError error) {
System.out.println("数据加载失败!");
}
});
Application.getInstance().getRequestQueue().add(request);
  相关解决方案