android开发--volley的使用
来源:互联网 发布:vmware linux nat模式 编辑:程序博客网 时间:2024/06/03 13:49
volley提供了1.StringRequest用来获得字串,2JsonObjectRequest,
JsonArrayRequest用来获取json数据,3.ImageLoader来获得网络图片
代码实现:get请求,服务器返回string
// 1.获得RequestQueue // 2创建StringRequest对象 // 3equestQueue.add(stringRequest) RequestQueue requestQueue = Volley.newRequestQueue(this); StringRequest stringRequest = new StringRequest(Request.Method.GET, URL_ADDRESS, new Response.Listener<String>() { @Override public void onResponse(String result) { // textview显示结果 tv_title.setText(result); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError arg0) { System.out.println("网络出错"); } }); requestQueue.add(stringRequest);
代码实现:普通post请求,服务器返回string
// 1.获得RequestQueue // 2创建StringRequest对象 // 3.重写StringRequest的getParams()方法 // 4.RequestQueue.add(stringRequest) RequestQueue requestQueue = Volley.newRequestQueue(this); StringRequest stringRequest = new StringRequest(Request.Method.POST, URL_ADDRESS, new Response.Listener<String>() { @Override public void onResponse(String result) { tv_title.setText(result); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError arg0) { System.out.println("网络出错"); } }) { @Override protected Map<String, String> getParams() throws AuthFailureError { Map<String, String> map = new HashMap<String, String>(); map.put("name", "偌渝"); map.put("age", "24"); return map; } }; requestQueue.add(stringRequest);
代码实现:普通请求,返回json:
// 由于volley给出的JsonRequest类修改了父类的getBody()方法,以至于其子类传参数也只能传递json数据
// 若果想通过普通请求,而返回json数据,可以自定义继承request<Json>
类,不重写getbody方法即可,然后就可以通过getParams()传参了
// 1.自定义继承request类
// 2.获得RequestQueue
// 3.创建自定义request类对象
// 4.getParams()方法传递参数
自定义继承request<Json>
类
package com.min.myvolley;import java.io.UnsupportedEncodingException;import org.json.JSONException;import org.json.JSONObject;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 JsongetPostRequest extends Request<JSONObject>{ private final Listener<JSONObject> mListener; protected static final String PROTOCOL_CHARSET = "utf-8"; public JsongetPostRequest(int method, String url,Listener<JSONObject> listener, ErrorListener errorlistener) { super(method, url,errorlistener); mListener=listener; } @Override protected void deliverResponse(JSONObject jsonObject) { mListener.onResponse(jsonObject); } @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)); } }}
调用即可:
RequestQueue requestQueue = Volley.newRequestQueue(this); JsongetPostRequest jsonPostRequest = new JsongetPostRequest( Request.Method.POST, URL_ADDRESS, new Listener<JSONObject>() { @Override public void onResponse(JSONObject result) { // System.out.println("结果为:" + result.toString()); tv_title.setText(result.toString()); } }, new ErrorListener() { @Override public void onErrorResponse(VolleyError arg0) { } }) { @Override protected Map<String, String> getParams() throws AuthFailureError { Map<String, String> map = new HashMap<String, String>(); map.put("name", "回眸"); map.put("age", "45"); return map; } }; requestQueue.add(jsonPostRequest);
代码实现:以Json请求,服务器返回jsonobject
// 1.获得RequestQueue // 2创建json数据 // 3.创建JsonObjectRequest对象 // 4.RequestQueue.add(jsRequest) RequestQueue requestQueue = Volley.newRequestQueue(this); JSONObject jObject = new JSONObject(); try { jObject.put("name", "张三那"); jObject.put("age", 23); } catch (JSONException e) { e.printStackTrace(); } // ַ JsonObjectRequest jsRequest = new JsonObjectRequest( Request.Method.POST, URL_ADDRESS, jObject, new Response.Listener<JSONObject>() { public void onResponse(JSONObject jsObject) { System.out.println("" + jsObject); tv_title.setText(jsObject.toString()); } }, new Response.ErrorListener() { public void onErrorResponse( com.android.volley.VolleyError arg0) { System.out.println("请求失败"); } }) { }; requestQueue.add(jsRequest);
代码实现:获取网络图片
// 1. 创建一个RequestQueue对象。 // // 2. 创建一个ImageLoader对象。 // ImageLoader的构造函数接收两个参数,第一个参数就是RequestQueue对象,第二个参数是一个ImageCache对象 // 写一个性能非常好的ImageCache,最好就要借助Android提供的LruCache功能 // 这里创建一个BitmapCache实现ImageCache接口 // // 3. 在布局文件中添加一个NetworkImageView控件。 // // 4. 在代码中获取该控件的实例。 // // 5. 设置要加载的图片地址。 RequestQueue requestQueue = Volley.newRequestQueue(this); ImageLoader loader = new ImageLoader(requestQueue, new BitmapCache()); nv.setDefaultImageResId(R.drawable.ic_launcher); nv.setErrorImageResId(R.drawable.ic_launcher); nv.setImageUrl(URL_ADDRESS, loader);
附bitmapcache类:
public class BitmapCache implements ImageCache{ private LruCache<String, Bitmap> mCache; public BitmapCache() { int maxsize=10*1024*1024; mCache=new LruCache<String, Bitmap>(maxsize){ @Override protected int sizeOf(String key, Bitmap bitmap) { return bitmap.getRowBytes()*bitmap.getHeight(); } }; } @Override public Bitmap getBitmap(String url) { return mCache.get(url); } @Override public void putBitmap(String url, Bitmap bitmap) { mCache.put(url, bitmap); }}
附xml:
<com.android.volley.toolbox.NetworkImageView android:id="@+id/iv" android:layout_width="200dp" android:layout_height="200dp" android:contentDescription="@string/picture" />
中文乱码问题:
修改volley中:com.android.volley.toolbox包HttpHeaderParser类的 parseCharset方法:强制改为utf-8
public static String parseCharset(Map<String, String> headers) { return parseCharset(headers, HTTP.UTF_8); }
0 0
- android开发--volley的使用
- Android开发—Volley 的使用
- Android Volley的使用
- android volley的使用
- Android开发:Google网络框架Volley的使用
- Android开发之Volley框架的简单使用
- Android开发——Volley的使用详解
- android开发,volley的二次封装和使用
- android---Volley库的使用
- Android Volley 框架的使用
- Android Volley 框架的使用
- Android Volley框架的使用
- Android Volley 框架的使用
- Android之Volley的使用
- Android Volley的使用总结
- Android Volley的简单使用
- Android开发使用Volley加载网络图片
- Android网络开发库Volley使用教程
- Codeforces 584A Olesya and Rodion 【构造】
- 开源日志系统比较:scribe、chukwa、kafka、flume
- 【杭电】[2099]整除的尾数
- 伪主动触发input:file的click事件
- 冒泡排序
- android开发--volley的使用
- POJ2253 Frogger
- 手机内存、sdcard读写操作学习笔记
- Myclipse发布项目错误问题已解决
- 运行时执行过程
- Ubuntu下配置Swift编程环境
- plsql访问oracle数据库中文乱码问题解决方法
- HDU 1711
- plsql链接64位ORACLE