• 0755-82538016
  • 0755-82560826
  • 深圳网站建设_APP小程序开发_博纳网络

    • 网站建设案例
      • ";

        营销网站建设

        全网营销网站

        高端网站建设

        商城网站建设

        外贸网站建设

        小程序开发

        区块链开发

        物联网项目开发

        定制app开发

        在线教育网站

        速成网站建设

        服装网站建设

        餐饮网站建设

        珠宝首饰网站

        机械制造网站

        文化旅游网站

        家装建材网站

        美容化妆品网站

        数码产品网站

        模板案例库

        联系电话:0755-82560826 82538016 82560635邮箱:qin@198bona.com地址:深圳市福田区皇岗路5007神采苑402栋610
    • 网站推广
      • ";

        网站优化基础

        建站优化

        网站优化

        营销推广

        整站优化

        推广帮助

        谷歌搜索

        推广方案

        推广套餐

        推广技巧

        百度排名

        巧用微博推广

        直播视频网站推广法

        微信推广网站方法

        网站外链推广

        公共微信号推广

        网站优化闲谈

        常见问题

        公司资讯

        联系电话:0755-82560826 82538016 82560635邮箱:qin@198bona.com地址:深圳市福田区皇岗路5007神采苑402栋610
    • 网站制作资讯
      • ";

        网站制作

        外贸网站建设

        网站设计

        网站代运营

        深圳网站建设专栏

        深圳小程序开发

        网站改版

        APP开发

        网站建设方案

        安全维护

        软件开发

        平台搭建

        建站行业资讯

        域名注册

        虚拟主机

        企业邮局

        国外主机

        VPS独享空间

        免备案香港服务器

        如何解析域名

        联系电话:0755-82560826 82538016 82560635邮箱:qin@198bona.com地址:深圳市福田区皇岗路5007神采苑402栋610
    • 网站报价
      • ";

        网站报价

        建站方案

        联系电话:0755-82560826 82538016 82560635邮箱:qin@198bona.com地址:深圳市福田区皇岗路5007神采苑402栋610
    • 公司动态
      • ";
        联系电话:0755-82560826 82538016 82560635邮箱:qin@198bona.com地址:深圳市福田区皇岗路5007神采苑402栋610
    • 关注博纳
      • ";

        网站制作精英团队

        网站建设公司愿景

        公司介绍

        主营业务

        博纳文化

        加入博纳

        联系电话:0755-82560826 82538016 82560635邮箱:qin@198bona.com地址:深圳市福田区皇岗路5007神采苑402栋610
    • 联系我们
      • ";

        网站建设公司联系方式

        网站建设、网站制作公司乘车路线

        联系电话:0755-82560826 82538016 82560635邮箱:qin@198bona.com地址:深圳市福田区皇岗路5007神采苑402栋610
      网站制作资讯

      当前位置:

        主页网站制作资讯APP开发开发APP关于Volley库支持的HTTP方法与代码分享

      开发APP关于Volley库支持的HTTP方法与代码分享

      发布时间:2019-03-08

      文章编辑:网站建设 文章来源:APP开发 浏览量:次

        APP开发关于Volley网络库简介,深圳APP开发公司提醒Volley网络库Volley库是Google官方提供的开源网络库,在Android系统中也使用了这个网络库。Volley库对网络功能进行了封装,默认根据Android系统的不同版本使用不同的HTTP协议栈。
        在Android2.3及以上版本使用HurlStack协议栈,在Android2.3以下版本使用HttpClientStack协议栈。使用者也可以自己设置其中使用的HTTP协议栈,使用比较灵活。Volley库支持字符串、图片和JSON格式数据的处理,但因为在解析服务器端的响应消息时,Volley库是把响应消息存储在内存中,所以Volley库不适合大数据量的网络请求,如下载大文件等。在Volley库的Volley类中,提供了设置请求HTTP协议栈的方法。
      publicclassVolley{  /**Defaulton-diskcachedirectory.*/  privatestaticfinalStringDEFAULT_CACHE_DIR="volley";  /**  *Createsadefaultinstanceoftheworkerpoolandcalls{@linkRequestQueue#start()}onit.  *  *@paramcontextA{@linkContext}touseforcreatingthecachedir.  *@paramstackAn{@linkHttpStack}touseforthenetwork,ornullfordefault.  *@returnAstarted{@linkRequestQueue}instance.  */  publicstaticRequestQueuenewRequestQueue(Contextcontext,HttpStackstack){    FilecacheDir=newFile(context.getCacheDir(),DEFAULT_CACHE_DIR);    StringuserAgent="volley/0";    try{      StringpackageName=context.getPackageName();
        PackageInfoinfo=context.getPackageManager().getPackageInfo      (packageName,0);userAgent=packageName+"/"+info.versionCode;    }catch(NameNotFoundExceptione){    }    if(stack==null){       if(Build.VERSION.SDK_INT>=9){         stack=newHurlStack();       }else{         //PriortoGingerbread,HttpUrlConnectionwasunreliable.         //See:http://android-developers.blogspot.com/2011/09/androids-http-clients.html         stack=newHttpClientStack(AndroidHttpClient.newInstance(userAgent));       }    }    Networknetwork=newBasicNetwork(stack);    RequestQueuequeue=newRequestQueue(newDiskBasedCache(cacheDir),network);    queue.start();
       returnqueue;  }  /**  *Createsadefaultinstanceoftheworkerpoolandcalls{@linkRequestQueue#start()}onit.  *  *@paramcontextA{@linkContext}touseforcreatingthecachedir.  *@returnAstarted{@linkRequestQueue}instance.  */  publicstaticRequestQueuenewRequestQueue(Contextcontext){    returnnewRequestQueue(context,null);  }}在Volley库的Request类中,定义了Volley库支持的HTTP方法。publicabstractclassRequest<T>implementsComparable<Request<T>>{  …  /**  *Supportedrequestmethods.  */
        publicinterfaceMethod{    intDEPRECATED_GET_OR_POST=-1;    intGET=0;    intPOST=1;    intPUT=2;    intDELETE=3;    intHEAD=4;    intOPTIONS=5;    intTRACE=6;    intPATCH=7;  }…  publicRequest(intmethod,Stringurl,Response.ErrorListenerlistener){    mMethod=method;    mUrl=url;    mIdentifier=createIdentifier(method,url);    mErrorListener=listener;    setRetryPolicy(newDefaultRetryPolicy());    mDefaultTrafficStatsTag=findDefaultTrafficStatsTag(url);  }…}
      在Volley库中,HttpHeaderParser类用于处理从服务器获得的头字段数据。publicclassHttpHeaderParser{    publicstaticCache.EntryparseCacheHeaders(NetworkResponseresponse){    longnow=System.currentTimeMillis();    Map<String,String>headers=response.headers;    longserverDate=0;    longlastModified=0;    longserverExpires=0;    longsoftExpire=0;    longfinalExpire=0;    longmaxAge=0;    longstaleWhileRevalidate=0;    booleanhasCacheControl=false;    booleanmustRevalidate=false;    StringserverEtag=null;    StringheaderValue;
       headerValue=headers.get("Date");    if(headerValue!=null){       serverDate=parseDateAsEpoch(headerValue);    }    headerValue=headers.get("Cache-Control");    if(headerValue!=null){       hasCacheControl=true;       String[]tokens=headerValue.split(",");       for(inti=0;i<tokens.length;i++){          Stringtoken=tokens[i].trim();          if(token.equals("no-cache")||token.equals("no-store")){            returnnull;          }elseif(token.startsWith("max-age=")){            try{              maxAge=Long.parseLong(token.substring(8));            }catch(Exceptione){            }          }elseif(token.startsWith("stale-while-revalidate=")){            try{              staleWhileRevalidate=Long.parseLong(token.substring(23));            }catch(Exceptione){
        }         }elseif(token.equals("must-revalidate")||token.equals("proxy-revalidate")){            mustRevalidate=true;          }       }    }    headerValue=headers.get("Expires");    if(headerValue!=null){      serverExpires=parseDateAsEpoch(headerValue);    }    headerValue=headers.get("Last-Modified");    if(headerValue!=null){      lastModified=parseDateAsEpoch(headerValue);    }    serverEtag=headers.get("ETag");    //Cache-ControltakesprecedenceoveranExpiresheader,evenifbothexistandExpires    //ismorerestrictive.    if(hasCacheControl){      softExpire=now+maxAge*1000;
      finalExpire=mustRevalidate          ?softExpire          :softExpire+staleWhileRevalidate*1000;    }elseif(serverDate>0&&serverExpires>=serverDate){      //DefaultsemanticforExpireheaderinHTTPspecificationissoftExpire.      softExpire=now+(serverExpires-serverDate);      finalExpire=softExpire;    }    Cache.Entryentry=newCache.Entry();    entry.data=response.data;    entry.etag=serverEtag;    entry.softTtl=softExpire;    entry.ttl=finalExpire;    entry.serverDate=serverDate;    entry.lastModified=lastModified;    entry.responseHeaders=headers;    returnentry;  }…}
      目前大多数APP与服务器间传输数据时,都是使用JSON格式,Volley库中提供了使用JSON格式传递数据的类。publicabstractclassJsonRequest<T>extendsRequest{/**DefaultcharsetforJSONrequest.*/protectedstaticfinalStringPROTOCOL_CHARSET="utf-8";/**Contenttypeforrequest.*/privatestaticfinalStringPROTOCOL_CONTENT_TYPE=String.format("application/json;charset=%s",PROTOCOL_CHARSET);privatefinalListener<T>mListener;privatefinalStringmRequestBody;  /**  *DeprecatedconstructorforaJsonRequestwhichdefaultstoGETunless{@link#getPostBody()}  *or{@link#getPostParams()}isoverridden(whichdefaultstoPOST).  *  *@deprecatedUse{@link#JsonRequest(int,String,String,Listener,ErrorListener)}.  */
       publicJsonRequest(Stringurl,StringrequestBody,Listener<T>listener,      ErrorListenererrorListener){    this(Method.DEPRECATED_GET_OR_POST,url,requestBody,listener,errorListener);  }  publicJsonRequest(intmethod,Stringurl,StringrequestBody,Listener<T>listener,      ErrorListenererrorListener){    super(method,url,errorListener);    mListener=listener;    mRequestBody=requestBody;  }  @Override  protectedvoiddeliverResponse(Tresponse){    mListener.onResponse(response);  }  @Override  abstractprotectedResponse<T>parseNetworkResponse(NetworkResponseresponse);  /**
      *@deprecatedUse{@link#getBodyContentType()}.  */  @Override  publicStringgetPostBodyContentType(){    returngetBodyContentType();  }  /**  *@deprecatedUse{@link#getBody()}.  */  @Override  publicbyte[]getPostBody(){    returngetBody();  }  @Override  publicStringgetBodyContentType(){    returnPROTOCOL_CONTENT_TYPE;  }  @Override  publicbyte[]getBody(){    try{      returnmRequestBody==null?null:mRequestBody.getBytes(PROTOCOL_CHARSET);
       }catch(UnsupportedEncodingExceptionuee){      VolleyLog.wtf("UnsupportedEncodingwhiletryingtogetthebytesof%susing%s",          mRequestBody,PROTOCOL_CHARSET);      returnnull;    }  }}publicclassJsonObjectRequestextendsJsonRequest<JSONObject>{  /**  *Createsanewrequest.  *@parammethodtheHTTPmethodtouse  *@paramurlURLtofetchtheJSONfrom  *@paramjsonRequestA{@linkJSONObject}topostwiththerequest.Nullisallowedand  * indicatesnoparameterswillbepostedalongwithrequest.  *@paramlistenerListenertoreceivetheJSONresponse  *@paramerrorListenerErrorlistener,ornulltoignoreerrors.  */  publicJsonObjectRequest(intmethod,Stringurl,JSONObjectjsonRequest,      Listener<JSONObject>listener,ErrorListenererrorListener)
      errorListener){    super(method,url,(jsonRequest==null)?null:jsonRequest.toString(),listener,          errorListener);  }  /**  *Constructorwhichdefaultsto<code>GET</code>if<code>jsonRequest</code>is  *<code>null</code>,<code>POST</code>otherwise.  *  *@see#JsonObjectRequest(int,String,JSONObject,Listener,ErrorListener)  */  publicJsonObjectRequest(Stringurl,JSONObjectjsonRequest,Listener<JSONObject>listener,      ErrorListenererrorListener){    this(jsonRequest==null?Method.GET:Method.POST,url,jsonRequest,        listener,errorListener);  }  @Override  protectedResponse<JSONObject>parseNetworkResponse(NetworkResponseresponse){
       try{      StringjsonString=newString(response.data,          HttpHeaderParser.parseCharset(response.headers,PROTOCOL_CHARSET));      returnResponse.success(newJSONObject(jsonString),          HttpHeaderParser.parseCacheHeaders(response));    }catch(UnsupportedEncodingExceptione){      returnResponse.error(newParseError(e));    }catch(JSONExceptionje){      returnResponse.error(newParseError(je));    }  }}
      好了,APP开发公司本文关于“开发APP关于Volley库支持的HTTP方法与代码分享”就到这里,谢谢关注,希望能给您的APP开发前期工作有所帮助,博纳网络编辑整理。

      当前文章链接:/construction/appkaifa/2342.html
      上一篇:开发APP关于Session的功能介绍与应用 下一篇:开发APP对于怎样封装Volley网络库代码详解
      返回列表
      如果您觉得案例还不错请帮忙分享:

      [声明]本网转载网络媒体稿件是为了传播更多的信息,此类稿件不代表本网观点,本网不承担此类稿件侵权行为的连带责任。故此,如果您发现本网站的内容侵犯了您的版权,请您的相关内容发至此邮箱【qin@198bona.com 】,我们在确认后,会立即删除,保证您的版权。

      相关案例推荐

      • 馨怡婚庆

        馨怡婚庆

        企业网站

        馨怡婚庆

      • 安徽沙湖农业

        安徽沙湖农业

        企业网站

        安徽沙湖农业

      • 0575嵊州

        0575嵊州

        商城门户

        0575嵊州

      资讯分类

      • 网站制作
      • 外贸网站建设
      • 网站设计
      • 网站代运营
      • 深圳网站建设专栏
      • 深圳小程序开发
      • 网站改版
      • APP开发
      • 网站建设方案
      • 安全维护
      • 软件开发
      • 平台搭建
      • 建站行业资讯
      • 域名注册
      • 虚拟主机
      • 企业邮局
      • 国外主机
      • VPS独享空间
      • 免备案香港服务器
      • 如何解析域名

      最新发布

      • 社区APP开发上线后影响用户使用的粘性有哪些?
      • 为什么说大健产业O2OAPP开发潜力无限
      • 网络公司对社区O2OAPP开发基本认识
      • 工业4.0时代怎样做好一个APP的开发工作?
      • APP开发公司分析APP应用开发下一个巨头在哪些领域?
      • APP电子商务平台开发前景如何?
      • 社交类型APP开发需要具备的五个必要条件
      • 社交类型APP平台开发使用小程序还是APP模式好?
      • 使用HTML语言开发APP商城可以吗?
      • 社区O2OAPP开发的方向选择

      相关资讯

      • APP网站制作流程以及栏目分布
      • 企业网站优化人员面对搜索引擎的困惑
      • 企业门户网站如何做好针对搜索引擎的优化工作
      • APP/PC购物商城网站如何做好产品图片的优化技巧
      • 网站软文内容以及网站外链存在的几种形式对网站有多大影响
      • 如何做好网站软文标题的描述更适合搜索引擎的需要?
      • 网站建设好后期出现被搜索引擎降权的几个主要因素
      • 小程序开发制作前途取决于市场,别被您的同行抢了先机
      • APP开发公司提醒您关注:电商平台要求商家“二选一”引多方不满 专家提建议
      • APP为什么会在我们的手机界面上变成僵尸图标?

      热门搜索

      • app网站建设
      • 商城网站建设
      • 网站优化
      • 网站怎么制作
      • 淘宝tTP公司
      • 设计公司
      • 企业网站建设
      • 网站建设开发
      • 代运营网站
      • 深圳网站制作

      Copyright © 2021 博纳网络 版权所有  粤ICP备17054727号

      • 🏠

        首页

      • 💬

        咨询

      • 📞

        通话

      • 📂

        案例

      • ⬆

        返回