使用Volley框架的Post请求得到评论内容
2014-08-21 11:04
501 查看
在项目中使用到的Volley框架,而对于Get的请求方法:自己封装一个工具类使用,直接调用就好
对于Post请求,看着Get的工具类,同样封装成一个类,直接调用就好:
在Activity中:
这样简单的传一个Id给后台,使用Post请求得到评论的数据。
package com.example.tools; import org.json.JSONArray; import org.json.JSONObject; import android.content.Context; import android.util.Log; import com.android.volley.DefaultRetryPolicy; import com.android.volley.Request; import com.android.volley.RequestQueue; import com.android.volley.Response; import com.android.volley.Response.Listener; import com.android.volley.RetryPolicy; import com.android.volley.VolleyError; import com.android.volley.toolbox.JsonArrayRequest; import com.android.volley.toolbox.JsonObjectRequest; import com.android.volley.toolbox.StringRequest; import com.example.college.R; public class JsonTools { public JsonTools() { } static { } /** * 解析json数据的工具类 * * @param context * @param json_path * @param callBack * @param queue */ public static void parseJsonString(Context context, String json_path, final JsonStringCallBack callBack, RequestQueue queue) { getRetryPolicy(); StringRequest request=new StringRequest(json_path, new Listener<String>() { @Override public void onResponse(String response) { callBack.jsonStringCallBack(response); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { Log.i("TAG", error.getMessage()); } }); queue.add(request); } /** * 解析数组开始的json字符串 * * @param context * @param json_path * @param callBack * @param queue */ public static void parseJsonArray(Context context, String json_path, final JsonArrayCallBack callBack, RequestQueue queue){ getRetryPolicy(); JsonArrayRequest request=new JsonArrayRequest(json_path, new Listener<JSONArray>() { @Override public void onResponse(JSONArray response) { // TODO Auto-generated method stub callBack.jsonArrayCallBack(response); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { // TODO Auto-generated method stub Log.i("TAG", error.getMessage()); } }); queue.add(request); } /** * 解析对象的json数据的工具 * @param context * @param json_path * @param callBack */ public static void parseJsonObject(Context context, String json_path, final JsonObjectCallBack callBack, RequestQueue queue) { getRetryPolicy(); JsonObjectRequest jsonObjectRequest = new JsonObjectRequest( Request.Method.GET, json_path, null, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { callBack.jsonObjectCallBack(response); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { } }); queue.add(jsonObjectRequest); } // 解析json对象的回调接口 public interface JsonObjectCallBack { public void jsonObjectCallBack(JSONObject jsonObject); } // 解析json数组的回调接口 public interface JsonArrayCallBack { public void jsonArrayCallBack(JSONArray jsonArray); } // 解析json字符串的回调接口 public interface JsonStringCallBack { public void jsonStringCallBack(String jsonString); } public static RetryPolicy getRetryPolicy() { RetryPolicy retryPolicy = new DefaultRetryPolicy(10000, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT); return retryPolicy; } }这只是使用了Get的请求方式。
对于Post请求,看着Get的工具类,同样封装成一个类,直接调用就好:
package com.example.tools; import java.io.UnsupportedEncodingException; import java.util.Map; import org.json.JSONException; import org.json.JSONObject; import com.android.volley.AuthFailureError; import com.android.volley.NetworkResponse; import com.android.volley.ParseError; import com.android.volley.Request; import com.android.volley.Response; import com.android.volley.Response.ErrorListener; import com.android.volley.Response.Listener; import com.android.volley.toolbox.HttpHeaderParser; public class NormalPostRequest extends Request<JSONObject> { private Map<String, String> mMap; private Listener<JSONObject> mListener; public NormalPostRequest(String url, Listener<JSONObject> listener,ErrorListener errorListener, Map<String, String> map) { super(Request.Method.POST, url, errorListener); mListener = listener; mMap = map; } //mMap是已经按照前面的方式,设置了参数的实例 @Override protected Map<String, String> getParams() throws AuthFailureError { return mMap; } //此处因为response返回值需要json数据,和JsonObjectRequest类一样即可 @Override protected Response<JSONObject> parseNetworkResponse(NetworkResponse response) { try { String jsonString = new String(response.data,HttpHeaderParser.parseCharset(response.headers)); return Response.success(new JSONObject(jsonString),HttpHeaderParser.parseCacheHeaders(response)); } catch (UnsupportedEncodingException e) { return Response.error(new ParseError(e)); } catch (JSONException je) { return Response.error(new ParseError(je)); } } @Override protected void deliverResponse(JSONObject response) { mListener.onResponse(response); } }
在Activity中:
public void GetTellShowDataPost(String path) { Map<String, String> map = new HashMap<String, String>(); map.put("id", id); // JSONObject jsonObject = new JSONObject(map); queue.add(new NormalPostRequest(path, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { try { System.out.println("--->>>" + response); JSONArray jsonArray = response.getJSONArray("list"); for (int i = 0; i < jsonArray.length(); i++) { JSONObject object = jsonArray.getJSONObject(i); Tell data = new Tell(); data.setId(object.getString("id")); data.setCid(object.getString("cid")); data.setUid(object.getString("uid")); data.setUname(object.getString("uname")); data.setContent(object.getString("content")); data.setWritetime(object.getString("writetime")); list.add(data); } if (list.isEmpty()) { ToastUtils .show(getApplicationContext(), "暂无评论"); } else { tellAdapter.addzxlist(list); tListView.setAdapter(tellAdapter); tellAdapter.notifyDataSetChanged(); } } catch (JSONException e) { e.printStackTrace(); } } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { ToastUtils.show(getApplicationContext(), "数据请求出错"); } }, map)); }
这样简单的传一个Id给后台,使用Post请求得到评论的数据。
相关文章推荐
- volley框架下,使用post方式请求服务器,传递参数和头
- Android网络框架-Volley(四) 使用get和post方法发送json请求
- Volley框架--网络请求(GET和POST请求的使用)
- Android网络框架-Volley(四) 使用get和post方法发送json请求
- Android开发中使用Volley框架发送请求的get和post方法
- 高级部分 Volley框架的Post请求的使用
- Android Volley框架的几种post提交请求方式
- Volley框架的几种post提交请求方式
- Android Volley框架的几种post提交请求方式
- Android Volley框架的几种post提交请求方式(xml->xml json->json xml->json)
- 基于Volley框架的Post请求的实现
- Android Volley网络请求框架 实现post方法并带Map参数上传
- TP 接收post请求使用框架自带函数I()防止注入
- Android Volley框架的几种post提交请求方式
- Android网络请求框架Volley的使用
- Android学习笔记:Andorid网络请求框架Volley的使用(上)
- Android网络请求开源框架Volley快速使用指南(1)——发起Get和Post请求
- php使用fsockopen函数发送post,get请求获取网页内容的方法
- Volley框架使用之请求大量图片
- Android Volley框架的几种post提交请求方式[转]