对Volley简单的封装,让网络请求更简单
2016-12-09 16:52
477 查看
——–安卓初学者,大神轻喷
在项目中需要网络请求,找了很多框架,发现volley算是比较好用的了,可是每次请求带的参数又多又乱,于是进行了简单的整理,方便使用。
首先添加volley的依赖库(可能不是最新版,建议搜索最新版使用)
compile ‘com.mcxiaoke.volley:library:1.0.19’
现在的网络请求大多数都是json格式的,所以只进行了jsonRequest的使用。
post
这就是volley的post请求,看起来是不是又乱又麻烦,强迫症的我根本不能接受,于是在很简单的改动后,代码变成了这样,虽然更多了,但是一劳永逸啊
接口:
好了,经过这样的改变,使用起来也顺手多了呢,只需简单的几行代码,便可完成一次post请求:
get方法也是同理,因为这种代码很少修改,所以博主把post和get的方法放到了同一class中,源代码:
在项目中需要网络请求,找了很多框架,发现volley算是比较好用的了,可是每次请求带的参数又多又乱,于是进行了简单的整理,方便使用。
首先添加volley的依赖库(可能不是最新版,建议搜索最新版使用)
compile ‘com.mcxiaoke.volley:library:1.0.19’
现在的网络请求大多数都是json格式的,所以只进行了jsonRequest的使用。
post
RequestQueue requestQueue = Volley.newRequestQueue(context); JsonRequest<JSONObject> request = new JsonObjectRequest(Request.Method.POST, url, jsondata, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { } }) { @Override public Map<String, String> getHeaders() throws AuthFailureError { HashMap<String, String> headers = new HashMap<String, String>(); headers.put("Accept", "application/json"); headers.put("Content-Type", "application/json; charset=UTF-8"); return headers; } }; requestQueue.add(request); }
这就是volley的post请求,看起来是不是又乱又麻烦,强迫症的我根本不能接受,于是在很简单的改动后,代码变成了这样,虽然更多了,但是一劳永逸啊
public static class Post { private Context context; private JSONObject data = null; private String url = ""; private OnPostListener onPostListener; public Post(Context context) { this.context = context; } public Post setData(JSONObject data) { this.data = data; return this; } public Post setUrl(String url) { this.url = url; return this; } public Post post() { if (data == null) data = new JSONObject(); if (url.equals("")) { onPostListener.Failed("请设置url"); } else { RequestQueue requestQueue = Volley.newRequestQueue(context); JsonRequest<JSONObject> request = new JsonObjectRequest(Request.Method.POST, url, data, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { if (onPostListener != null) onPostListener.Success(response.toString()); i(response.toString()); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { if (onPostListener != null) onPostListener.Failed(error.toString()); e(error.toString()); } }) { @Override public Map<String, String> getHeaders() throws AuthFailureError { HashMap<String, String> headers = new HashMap<String, String>(); headers.put("Accept", "application/json"); headers.put("Content-Type", "application/json; charset=UTF-8"); return headers; } }; requestQueue.add(request); } return this; } public void setOnPostListener(OnPostListener onPostListener) { this.onPostListener = onPostListener; }
接口:
public interface OnPostListener { void Success(String result); void Failed(String msg); }
好了,经过这样的改变,使用起来也顺手多了呢,只需简单的几行代码,便可完成一次post请求:
new Post(context).setData(jsondata).setUrl(url).post().setOnPostListener(new OnPostListener() { @Override public void Success(String result) { } @Override public void Failed(String msg) { } });
get方法也是同理,因为这种代码很少修改,所以博主把post和get的方法放到了同一class中,源代码:
package com.smple.eshutao_new.netmodule.base;
import android.content.Context;
import android.util.Log;
import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.JsonRequest;
import com.android.volley.toolbox.Volley;
import org.json.JSONObject;
import java.util.HashMap;
import java.util.Map;
/**
* Created by simple on 2016/10/16.
*/
public class C {
public static class Post { private Context context; private JSONObject data = null; private String url = ""; private OnPostListener onPostListener; public Post(Context context) { this.context = context; } public Post setData(JSONObject data) { this.data = data; return this; } public Post setUrl(String url) { this.url = url; return this; } public Post post() { if (data == null) data = new JSONObject(); if (url.equals("")) { onPostListener.Failed("请设置url"); } else { RequestQueue requestQueue = Volley.newRequestQueue(context); JsonRequest<JSONObject> request = new JsonObjectRequest(Request.Method.POST, url, data, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { if (onPostListener != null) onPostListener.Success(response.toString()); i(response.toString()); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { if (onPostListener != null) onPostListener.Failed(error.toString()); e(error.toString()); } }) { @Override public Map<String, String> getHeaders() throws AuthFailureError { HashMap<String, String> headers = new HashMap<String, String>(); headers.put("Accept", "application/json"); headers.put("Content-Type", "application/json; charset=UTF-8"); return headers; } }; requestQueue.add(request); } return this; } public void setOnPostListener(OnPostListener onPostListener) { this.onPostListener = onPostListener; }
}
public static class Get {
private Context context;
private String url;
private OnGetListener onGetListener;
public Get(Context context) {
this.context = context;
}
public Get setUrl(String url) {
this.url = url;
return this;
}
public Get get() {
if (url.equals("")) {
onGetListener.Failed("请设置url");
} else {
RequestQueue requestQueue = Volley.newRequestQueue(context);
JsonRequest<JSONObject> request = new JsonObjectRequest(Request.Method.GET, url, new JSONObject(), new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
if (onGetListener != null)
onGetListener.Success(response.toString());
i(response.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
if (onGetListener != null)
onGetListener.Failed(error.toString());
e(error.toString());
}
}) {
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
HashMap<String, String> headers = new HashMap<String, String>();
headers.put("Accept", "application/json");
headers.put("Content-Type", "application/json; charset=UTF-8");
return headers;
}
};
requestQueue.add(request);
}
return this;
}
public void setOnGetListener(OnGetListener onGetListener) {
this.onGetListener = onGetListener;
}
}
public interface OnPostListener { void Success(String result); void Failed(String msg); }
public interface OnGetListener {
void Success(String result);
void Failed(String msg);
}
private static void i(String i) {
Log.i("成功", i);
}
private static void e(String e) {
Log.e("失败", e);
}
}
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件