使用Volley框架的Post请求得到评论内容
来源:互联网 发布:如何进行c盘数据备份 编辑:程序博客网 时间:2024/05/17 02:37
在项目中使用到的Volley框架,而对于Get的请求方法:自己封装一个工具类使用,直接调用就好
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>() {@Overridepublic void onResponse(String response) {callBack.jsonStringCallBack(response);}}, new Response.ErrorListener() {@Overridepublic 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>() {@Overridepublic void onResponse(JSONArray response) {// TODO Auto-generated method stubcallBack.jsonArrayCallBack(response);}}, new Response.ErrorListener() {@Overridepublic void onErrorResponse(VolleyError error) {// TODO Auto-generated method stubLog.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>() {@Overridepublic void onResponse(JSONObject response) {callBack.jsonObjectCallBack(response);}}, new Response.ErrorListener() {@Overridepublic 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>() {@Overridepublic 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() {@Overridepublic void onErrorResponse(VolleyError error) {ToastUtils.show(getApplicationContext(), "数据请求出错");}}, map));}
这样简单的传一个Id给后台,使用Post请求得到评论的数据。
0 0
- 使用Volley框架的Post请求得到评论内容
- Volley 框架的 POST请求
- 高级部分 Volley框架的Post请求的使用
- volley使用 POST请求
- Volley框架--网络请求(GET和POST请求的使用)
- Volley的使用(二) post请求
- Volley框架GET POST请求
- Android开发中使用Volley框架发送请求的get和post方法
- 基于Volley框架的Post请求的实现
- Android Volley框架的几种post提交请求方式
- Android Volley框架的几种post提交请求方式
- Android Volley框架的几种post提交请求方式
- Android:Volley框架的几种post提交请求方式
- Android Volley框架的几种post提交请求方式
- Volley框架的几种post提交请求方式
- Android Volley框架的几种post提交请求方式
- Android Volley框架的几种post提交请求方式
- Android Volley框架的几种post提交请求方式
- Statement和PreparedStatement之间的区别
- 引用&
- Xcode5.1离线下载安装及使用iOS5模拟器进行开发调试的方法
- 【互动问答分享】第8期决胜云计算大数据时代Spark亚太研究院公益大讲堂
- 嵌入css文件和javascript文件方法
- 使用Volley框架的Post请求得到评论内容
- Python 编译器 Pycharm
- 收藏一个可以用的ubuntu源
- Java ThreadLocal
- OpenCV 学习笔记- 01 Vs2010+ OpenCVS2.4.9 配置(Win7)
- Yii 权限分级式访问控制的实现(非RBAC法)
- 触发事件
- rpc是什么?php中流行的rpc框架有哪些。
- Android:Layout_weight的深刻理解