Volley介绍JSon 和提交字符串参数的封装(StringRequest和Gson)
2016-11-17 19:48
537 查看
接口回调:
public interface StringVolleyCallback {
//StringFromNet()和StringFromAndPutNet()方法调用
public void getStringFromVolley(String s);
//StringFromAndPutNet()方法调用
public void putStringFromVolley(Map<String, String> map);
//对json的字符串进行解析
public void getJsonFromJsonString(Object o);
//输出异常信息
public void getJsonErrorResponse(String s);
}
方法类:
/**
*
* 从网络获取字符串数据
*/
public class DataOfString {
private Context context;
private String url;
private RequestQueue mQueue;
private Class<?> mClass;
private int method;
private Gson gson;
//接口回调步骤2:定义接口成员变量
private StringVolleyCallback stringVolleyCallback;
//接口回调步骤3:实例化接口
public void setVolleyCallBck(StringVolleyCallback stringVolleyCallback) {
this.stringVolleyCallback = stringVolleyCallback;
}
public DataOfString(Context context, String url,int method,Class<?> mClass){
this.context = context;
this.url = url;
this.method = method;
this.mClass = mClass;
mQueue = Volley.newRequestQueue(context);
GsonBuilder builder = new GsonBuilder();
builder.registerTypeAdapter(Date.class, new JsonDeserializer<Date>() {
public Date deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
return new Date(json.getAsJsonPrimitive().getAsLong());
}
});
gson = builder.create();
}
public DataOfString(View view,String url,int method,Class<?> mClass){
this(view.getContext(),url,method,mClass);
}
public void StringFromNet() {
StringRequest stringRequest = new StringRequest(method,url, new Response.Listener<String>() {
@Override
public void onResponse(String s) {
//接口回调步骤4:实现接口回调方法
if (stringVolleyCallback !=null){
stringVolleyCallback.getStringFromVolley(s);
stringVolleyCallback.getJsonFromJsonString(gson.fromJson(s,mClass));
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
//打印错误信息
Log.e("请求错误信息:", volleyError.getMessage(), volleyError);
if (stringVolleyCallback !=null){
stringVolleyCallback.getJsonErrorResponse(volleyError.getMessage());
}
}
}){
@Override
protected Response<String> parseNetworkResponse(NetworkResponse response) {
//获取session
new ConnectViaSession().getSession(response);
return super.parseNetworkResponse(response);
}
};
mQueue.add(stringRequest);
}
public void StringFromAndPutNet() {
StringRequest stringRequest = new StringRequest(method, url, new Response.Listener<String>() {
@Override
public void onResponse(String s) {
if (stringVolleyCallback !=null){
stringVolleyCallback.getStringFromVolley(s);
stringVolleyCallback.getJsonFromJsonString(gson.fromJson(s,mClass));
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
//打印错误信息
Log.e("TAG", volleyError.getMessage(), volleyError);
}
}){
//发送session
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
//发送session
String sesseionid = new ConnectViaSession().GetSession();
if (!sesseionid.equals("")) {
HashMap<String, String> headers = new HashMap<String, String>();
headers.put("cookie", sesseionid);
return headers;
}else {
return super.getHeaders();
}
}
//给服务器提交参数
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> map = new HashMap<String, String>();
if (stringVolleyCallback !=null){
stringVolleyCallback.putStringFromVolley(map);
return map;
}
return map;
}
};
mQueue.add(stringRequest);
}
}
使用:
DataOfString json = new DataOfString(getApplicationContext(),url, Request.Method.POST,loginPojo.class);
json.setVolleyCallBck(new StringVolleyCallback() {
@Override
public void getStringFromVolley(String s) {
//System.out.println(s);
}
@Override
public void putStringFromVolley(Map<String, String> map) {
}
@Override
public void getJsonFromJsonString(Object o) {
}
}
@Override
public void getJsonErrorResponse(String s) {
}
});
json.StringFromAndPutNet();
public interface StringVolleyCallback {
//StringFromNet()和StringFromAndPutNet()方法调用
public void getStringFromVolley(String s);
//StringFromAndPutNet()方法调用
public void putStringFromVolley(Map<String, String> map);
//对json的字符串进行解析
public void getJsonFromJsonString(Object o);
//输出异常信息
public void getJsonErrorResponse(String s);
}
方法类:
/**
*
* 从网络获取字符串数据
*/
public class DataOfString {
private Context context;
private String url;
private RequestQueue mQueue;
private Class<?> mClass;
private int method;
private Gson gson;
//接口回调步骤2:定义接口成员变量
private StringVolleyCallback stringVolleyCallback;
//接口回调步骤3:实例化接口
public void setVolleyCallBck(StringVolleyCallback stringVolleyCallback) {
this.stringVolleyCallback = stringVolleyCallback;
}
public DataOfString(Context context, String url,int method,Class<?> mClass){
this.context = context;
this.url = url;
this.method = method;
this.mClass = mClass;
mQueue = Volley.newRequestQueue(context);
GsonBuilder builder = new GsonBuilder();
builder.registerTypeAdapter(Date.class, new JsonDeserializer<Date>() {
public Date deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
return new Date(json.getAsJsonPrimitive().getAsLong());
}
});
gson = builder.create();
}
public DataOfString(View view,String url,int method,Class<?> mClass){
this(view.getContext(),url,method,mClass);
}
public void StringFromNet() {
StringRequest stringRequest = new StringRequest(method,url, new Response.Listener<String>() {
@Override
public void onResponse(String s) {
//接口回调步骤4:实现接口回调方法
if (stringVolleyCallback !=null){
stringVolleyCallback.getStringFromVolley(s);
stringVolleyCallback.getJsonFromJsonString(gson.fromJson(s,mClass));
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
//打印错误信息
Log.e("请求错误信息:", volleyError.getMessage(), volleyError);
if (stringVolleyCallback !=null){
stringVolleyCallback.getJsonErrorResponse(volleyError.getMessage());
}
}
}){
@Override
protected Response<String> parseNetworkResponse(NetworkResponse response) {
//获取session
new ConnectViaSession().getSession(response);
return super.parseNetworkResponse(response);
}
};
mQueue.add(stringRequest);
}
public void StringFromAndPutNet() {
StringRequest stringRequest = new StringRequest(method, url, new Response.Listener<String>() {
@Override
public void onResponse(String s) {
if (stringVolleyCallback !=null){
stringVolleyCallback.getStringFromVolley(s);
stringVolleyCallback.getJsonFromJsonString(gson.fromJson(s,mClass));
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
//打印错误信息
Log.e("TAG", volleyError.getMessage(), volleyError);
}
}){
//发送session
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
//发送session
String sesseionid = new ConnectViaSession().GetSession();
if (!sesseionid.equals("")) {
HashMap<String, String> headers = new HashMap<String, String>();
headers.put("cookie", sesseionid);
return headers;
}else {
return super.getHeaders();
}
}
//给服务器提交参数
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> map = new HashMap<String, String>();
if (stringVolleyCallback !=null){
stringVolleyCallback.putStringFromVolley(map);
return map;
}
return map;
}
};
mQueue.add(stringRequest);
}
}
使用:
DataOfString json = new DataOfString(getApplicationContext(),url, Request.Method.POST,loginPojo.class);
json.setVolleyCallBck(new StringVolleyCallback() {
@Override
public void getStringFromVolley(String s) {
//System.out.println(s);
}
@Override
public void putStringFromVolley(Map<String, String> map) {
}
@Override
public void getJsonFromJsonString(Object o) {
}
}
@Override
public void getJsonErrorResponse(String s) {
}
});
json.StringFromAndPutNet();
相关文章推荐
- volley JsonObjectRequest 提交参数
- Android Volley的基本用法--StringRequest以及JsonReques
- Spring MVC 后端获取前端提交的json格式字符串并直接转换成control方法对应的参数对象
- Gson解析Json字符串出现异常:Expected a BEGIN_ARRAY but was STRING at line 1 column 107 $的解决方法
- Gson解析,Volley使用,Gson转成Bean 类 _____给你一个json文件的网址, 一秒解析出你想要的参数.
- Android:简单封装Volley StringRequest
- Volley的Get、Post方式(JsonObjectRequest、StringRequest)以及Volley获取图片的3种方式
- 接口调用,输出结果为Json格式(ConvertTo-Json),提交参数给URL(WebRequest)
- Volley StringRequest和JSONObjectRequest使用几个细节
- Volley学习(二)简封Volley、为Volley请求头体添加Json参数、Gson和JsonObject生成Json数据、Gson解析返回的Json
- 在远程调用别人接口的时候,传输参数一般都是String类型的字符串,改字符串可以是json格式的,也可以是xml格式的,那么问题来了
- Android-Volley网络通信框架(StringRequest & JsonObjectRequest)
- 关于Volley中JsonObjectRequest使用Post设置参数的问题
- C# HttpWebRequest用Post同时提交参数和文件的封装类
- 初识Volley:JsonObjectRequest、StringRequest、RequestQueue
- Gson解析json字符串,并封装成List<T>
- Volley StringRequest和JSONObjectRequest使用几个细节
- Volley StringRequest和JSONObjectRequest使用几个细节
- @requestBody:Spring MVC对Json字符串参数的处理(坑)
- Volley StringRequest和JSONObjectRequest的使用