当前位置: 首页 > news >正文

工商银行与建设银行网站对比石嘴山网站seo

工商银行与建设银行网站对比,石嘴山网站seo,wordpress编辑器添加商品,网站后台都有哪些此博文源码下载地址 https://github.com/Javen205/VolleyDemo.git 使用请求队列RequestQueue Volley中的Request都需要添加到RequestQueue中才能执行#xff0c;所以首先需要创建一个RequestQueue RequestQueue Volley.newRequestQueue(mContext); 通常情况在一个应用中需要…   此博文源码下载地址  https://github.com/Javen205/VolleyDemo.git 使用请求队列RequestQueue Volley中的Request都需要添加到RequestQueue中才能执行所以首先需要创建一个RequestQueue RequestQueue Volley.newRequestQueue(mContext); 通常情况在一个应用中需要统一管理一个请求队列所以采用单例模式注意这不是必须的创建一个类并在这个类中初始化RequestQueue等核心对象以及实现一些我们所需的方法 代码如下 package com.javen.volley;import android.content.Context; import android.text.TextUtils;import com.android.volley.Request; import com.android.volley.RequestQueue; import com.android.volley.toolbox.ImageLoader; import com.android.volley.toolbox.Volley;public class VolleyController {// 创建一个TAG方便调试或Logprivate static final String TAG VolleyController;// 创建一个全局的请求队列private RequestQueue reqQueue;private ImageLoader imageLoader;// 创建一个static ApplicationController对象便于全局访问private static VolleyController mInstance;private Context mContext;private VolleyController(Context context) {mContextcontext;}/*** 以下为需要我们自己封装的添加请求取消请求等方法*/// 用于返回一个VolleyController单例public static VolleyController getInstance(Context context) {if (mInstance null) {synchronized(VolleyController.class){if (mInstance null) {mInstance new VolleyController(context);}}}return mInstance;}// 用于返回全局RequestQueue对象如果为空则创建它public RequestQueue getRequestQueue() {if (reqQueue null){synchronized(VolleyController.class){if (reqQueue null){reqQueue Volley.newRequestQueue(mContext);}}}return reqQueue;}// public ImageLoader getImageLoader(){ // getRequestQueue(); // //如果imageLoader为空则创建它第二个参数代表处理图像缓存的类 // if(imageLoadernull){ // imageLoadernew ImageLoader(reqQueue, new LruBitmapCache()); // } // return imageLoader; // }/*** 将Request对象添加进RequestQueue由于Request有*StringRequest,JsonObjectResquest...* 等多种类型所以需要用到*泛型。同时可将*tag作为可选参数以便标示出每一个不同请求*/public T void addToRequestQueue(RequestT req, String tag) {// 如果tag为空的话就是用默认TAGreq.setTag(TextUtils.isEmpty(tag) ? TAG : tag);getRequestQueue().add(req);}public T void addToRequestQueue(RequestT req) {req.setTag(TAG);getRequestQueue().add(req);}// 通过各Request对象的Tag属性取消请求public void cancelPendingRequests(Object tag) {if (reqQueue ! null) {reqQueue.cancelAll(tag);}} }   执行异步请求 上篇文章已经提到过Volley主要提供了以下几种类型的异步请求 JsonObjectRequest 用来接收和发送JsonObject类型的数据JsonArrayRequest 用来接收和发送JsonArray类型的数据StringRequest 用来接收和发送响应主体为String的数据JsonObjectRequest 这是一个用来发送和接收JSON数据最常用的类,覆写这个类中的一些方法可以发送GET,POST,DELETE,PUT等适当的HTTP请求常见操作代码示例   final String urlhttp://xxx;JsonObjectRequest reqnew JsonObjectRequest(url,null,new Response.ListenerJsonObject(){Overridepublic void onResponse(JsonObject response){//正确响应时回调此函数}},new ResponseError.Listener(){Overridepublic void onErrorResponse(VolleyError error){//未正确响应时回调此函数} }); //将请求添加至全局RequestQueue VolleyController.getInstance(context).addToRequestQueue(req);   发送包含HTTP 请求方法(Post Put Get Delete)的 Request 如果我们想要发送Post,Delete等请求可通过一个带请求参数的JsonObject对象来实现   //用来保存post参数 HashMapString,String paramsnew HashMapString,String(); params.put(user,xxx);//new JsonObject(params) 作为 JsonObjectRequest 参数 JsonObjectRequest reqnew JsonObjectRequest(url,new JsonObject(params),new Response.ListenerJsonObject(){...},new Response.ErrorListener(){...});   发送JsonArrayRequest StringRequest与JsonObjectRequest类似 JsonArrayRequest reqnew JsonArrayRequest(url,new Response.ListenerJsonArray(){..},new Response.ErrorListener(){..}); StringRequest reqnew StringRequest(url,new Response.ListenerString(){..},new Response.ErrorListener(){..}); 取消Request Volley框架提供了强大的API来支持取消正在等待或者运行的一个或多个请求还记得我们先前提到的setTag()方法吗正是通过Tag来标示每个Request我们特可以通过这个Tag来取消Request //可以通过setTag方法为每一个Request添加tag req.setTag(Tag); //也可以在我们实现的添加进RequestQueue的时候设置 VolleyController.getInstance(context).cancelPendingRequests(Tag);//取消Request reqQueue.cancelAll(Tag); //我们前面实现的方法 VolleyController.getInstance(context).cancelPendingRequests(Tag); 》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》 学习完上面三个方面的知识我们就已经差不多掌握了Volley最常用的方法如果想让你的应用更健壮还需要了解Volley中的错误处理设置请求失败重试机制和超时机制设置请求优先级设置请求头部等等     拓展部分 请求失败时的重试和请求自定义超时   Volley中提供了一个方案可以通过Request对象调用setRetryPolicy()方法,设置超时和重试请求     // 第一个代表超时时间即超过20S认为超时第三个参数代表最大重试次数这里设置为1.0f代表如果超时则不重试req.setRetryPolicy(new DefaultRetryPolicy(20 * 1000, 1, 1.0f)); 设置请求优先级 在实际开发中我们常常需要提高一些请求的优先级以便优先执行可以通过覆写getPrioriity()方法 //优先级有LOWNORMAL,HIGH,IMMEDIATE private Priority priority Priority.HIGH;StringRequest strReq new StringRequest(Method.GET,Const.URL_STRING_REQ, new Response.ListenerString() {Overridepublic void onResponse(String response) {Log.d(TAG, response.toString());msgResponse.setText(response.toString());hideProgressDialog();}}, new Response.ErrorListener() {Overridepublic void onErrorResponse(VolleyError error) {VolleyLog.d(TAG, Error: error.getMessage());hideProgressDialog();}}) {Overridepublic Priority getPriority() {return priority;} };   设置请求头部HTTP 头部 很多时候需要给HTTP Request添加头部一个典型的场景就是基本的HTTP 授权认证Request类中提供了getHeaders()方法你需要覆写并添加自己的自定义头部 Override public MapString, String getHeaders() throws AuthFailureError {HashMapString, String headers new HashMapString, String();headers.put(CUSTOM_HEADER, Yahoo);headers.put(ANOTHER_CUSTOM_HEADER, Google);return headers; } 错误处理 你可能已经注意到了在创建Request对象时构造参数中有new Response.ErrorListener(),这就是典型的错误处理 volley中错误主要有以下几类 AuthFailureError — 基本的Http身份认证授权错误.NetworkError — 网络错误NoConnectionError — 网络连接错误.ParseError — 数据解析错误.ServerError — 服务端错误.TimeoutError — 超时错误.你可以实现自己的错误处理类用来返回具体的错误信息 public class VolleyErrorHelper {//用于返回具体错误信息分辨错误类别public static String getMessage(Object error, Context context) {if (error instanceof TimeoutError) {return context.getResources().getString(R.string.generic_server_down);}else if (isServerProblem(error)) {return handleServerError(error, context);}else if (isNetworkProblem(error)) {return context.getResources().getString(R.string.no_internet);}return context.getResources().getString(R.string.generic_error);}//判断是否是网络错误private static boolean isNetworkProblem(Object error) {return (error instanceof NetworkError) || (error instanceof NoConnectionError);}//判断是否是服务端错误private static boolean isServerProblem(Object error) {return (error instanceof ServerError) || (error instanceof AuthFailureError);}//处理服务端错误private static String handleServerError(Object err, Context context) {VolleyError error (VolleyError) err;NetworkResponse response error.networkResponse;if (response ! null) {switch (response.statusCode) {case 404:case 422:case 401:try {// server might return error like this { error: Some error occured }// Use Gson to parse the resultHashMapString, String result new Gson().fromJson(new String(response.data),new TypeTokenMapString, String() {}.getType());if (result ! null result.containsKey(error)) {return result.get(error);}} catch (Exception e) {e.printStackTrace();}return error.getMessage();default:return context.getResources().getString(R.string.generic_server_down);}}return context.getResources().getString(R.string.generic_error);}} 总结     综上我们已经基本上学完了Volley框架的大部分知识唯一还没有涉及到且比较重要的就是图像缓存方面的内容将在下篇博客中介绍 参考资料Asynchronous HTTP Requests in Android Using Volley  blog
http://www.pierceye.com/news/664134/

相关文章:

  • seo快速建站自学程序员的步骤
  • 做旅行网站的依据及意义如何制作自己想要的图片
  • 电子商务网站怎么做网站建设企业建站哪家好?来这里看看
  • 网站备案电话号码购物商城网站建设方案
  • 手机商城系统徐州seo计费管理
  • 西安网站公司哪家好信息推广的方式有哪些
  • 网站开发注意的事项商丘网站制作软件
  • 51zwd一起做网站广州广东省网站备案查询
  • 如何生成一个网站自己弄公司网站
  • 企业信用信息查询网官网孝感网站seo
  • 中淼建设工程有限公司网站分类用wordpress
  • 腾讯建设网站首页做销售网站
  • 推广引流网站聚名网注册
  • 原来做网站后来跑国外了多伦多网站建设多少钱
  • 手机建站平台做母婴网站设计思路
  • 免费个人手机网站九八智能建站
  • 中山网站备案如何做购物网站
  • 常见的简单的网站制作建设网站的好公司
  • 邯郸网站制作建设wordpress+怎么迁移
  • 设计创意广告上海企业网站优化
  • 自己做网站需要购买服务器吗WordPress文章相册修改
  • 校园招聘哪个网站做的好学做川菜网站
  • 大足网站建设公司医院网站建设熊掌号
  • 做网站编辑是不是也要做推广做蛋白go分析网站
  • 免费品牌网站制作云南电商网站建设
  • 宿迁莱布拉网站建设常州做网站建设的公司
  • 广东网站建站系统哪家好常州网站搭建公司
  • 400网站建设推广软件工程师工资
  • 专门做正品的网站手机版深圳市门户网站建设怎么样
  • 做外贸比较好的网站有哪些北京短视频代运营