Volley介紹JSon 和提交字串引數的封裝(StringRequest和Gson)
介面回撥:
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();
相關文章
- XML和JSON的介紹XMLJSON
- 如何使用JSON和GSONJSON
- Gson泛型封裝泛型封裝
- Jaeger TChannel——HTTP和JSON封裝HTTPJSON封裝
- 【MYSQL】兩階段提交及相關引數介紹MySql
- 封裝Volley使Volley的每個請求都自動儲存和傳送Cookie封裝Cookie
- json字串與json物件簡單介紹JSON字串物件
- android使用gson和泛型解析伺服器回撥的封裝Android泛型伺服器封裝
- 前端封裝成json資料和json陣列的方法前端封裝JSON陣列
- docker 引數介紹Docker
- MySQL change buffer介紹和相關引數調整建議MySql
- 封裝axios請求並對提交引數進行校驗封裝iOS
- Sqoop的介紹和安裝OOP
- MySQL query_cache_type的DEMAND引數介紹和使用舉例MySql
- 尋找寫程式碼感覺(七)之封裝請求引數和返回引數封裝
- JavaScript封裝方法,相容引數型別為Number和StringJavaScript封裝型別
- jquery解析json格式字串簡單介紹jQueryJSON字串
- Laravel同時接收路由引數和查詢字串中的引數Laravel路由字串
- 封裝帶引數的函式封裝函式
- Linux核心引數overcommit_memory和OOM killer介紹LinuxMITOOM
- Tensorflow介紹和安裝
- javascript數字和字串資料型別轉換簡單介紹JavaScript字串資料型別
- gcc 常用引數介紹GC
- HRMS Function 引數介紹Function
- JSONObject應用Json字串和Object物件之間的轉換,Map封裝資料思路JSONObject字串物件封裝
- Gson – 比較兩個順序無關的json字串JSON字串
- 尋找寫程式碼感覺(十二)之 封裝分頁請求引數和返回引數封裝
- Eclipse安裝GSON,使用GSON轉換Java Object到JSONEclipseJavaObjectJSON
- C#關於JArray和JObject封裝JSON物件C#JARObject封裝JSON物件
- Java設定JSON字串引數編碼JavaJSON字串
- json字串和json格式物件的轉換JSON字串物件
- JSON簡介和Ajax簡介--bea這兩篇文章介紹的不錯JSON
- Oracle 各版本引數/隱藏引數 介紹Oracle
- 壓力測試sysbench安裝及引數介紹
- MongoDB啟動引數介紹MongoDB
- PostgreSQLGUC引數級別介紹SQL
- margin引數簡單介紹
- margin 引數簡單介紹