1.
Volley¼ò½é
ÎÒÃÇÆ½Ê±ÔÚ¿ª·¢AndroidÓ¦ÓõÄʱºò²»¿É±ÜÃâµØ¶¼ÐèÒªÓõ½ÍøÂç¼¼Êõ£¬¶ø¶àÊýÇé¿öÏÂÓ¦ÓóÌÐò¶¼»áʹÓÃHTTPÐÒéÀ´·¢ËͺͽÓÊÕÍøÂçÊý¾Ý¡£AndroidϵͳÖÐÖ÷ÒªÌṩÁËÁ½ÖÖ·½Ê½À´½øÐÐHTTPͨÐÅ£¬HttpURLConnectionºÍHttpClient£¬¼¸ºõÔÚÈκÎÏîÄ¿µÄ´úÂëÖÐÎÒÃǶ¼ÄÜ¿´µ½ÕâÁ½¸öÀàµÄÉíÓ°£¬Ê¹ÓÃÂʷdz£¸ß¡£
²»¹ýHttpURLConnectionºÍHttpClientµÄÓ÷¨»¹ÊÇÉÔ΢ÓÐЩ¸´Ôӵģ¬Èç¹û²»½øÐÐÊʵ±·â×°µÄ»°£¬ºÜÈÝÒ׾ͻáд³ö²»ÉÙÖØ¸´´úÂë¡£ÓÚÊǺõ£¬Ò»Ð©AndroidÍøÂçͨÐÅ¿ò¼ÜÒ²¾ÍÓ¦Ô˶øÉú£¬±ÈÈç˵AsyncHttpClient£¬Ëü°ÑHTTPËùÓеÄͨÐÅϸ½ÚÈ«²¿·â×°ÔÚÁËÄÚ²¿£¬ÎÒÃÇÖ»ÐèÒª¼òµ¥µ÷Óü¸ÐдúÂë¾Í¿ÉÒÔÍê³ÉͨÐŲÙ×÷ÁË¡£ÔÙ±ÈÈçUniversal-Image-Loader£¬ËüʹµÃÔÚ½çÃæÉÏÏÔÊ¾ÍøÂçͼƬµÄ²Ù×÷±äµÃ¼«¶È¼òµ¥£¬¿ª·¢Õß²»ÓùØÐÄÈçºÎ´ÓÍøÂçÉÏ»ñȡͼƬ£¬Ò²²»ÓùØÐÄ¿ªÆôÏ̡߳¢»ØÊÕͼƬ×ÊÔ´µÈϸ½Ú£¬Universal-Image-LoaderÒѾ°ÑÒ»Çж¼×öºÃÁË¡£
Android¿ª·¢ÍŶÓÒ²ÊÇÒâʶµ½ÁËÓбØÒª½«HTTPµÄͨÐŲÙ×÷ÔÙ½øÐмòµ¥»¯£¬ÓÚÊÇÔÚ2013ÄêGoogle
I/O´ó»áÉÏÍÆ³öÁËÒ»¸öеÄÍøÂçͨÐÅ¿ò¼Ü¡ª¡ªVolley¡£Volley¿ÉÊÇ˵ÊǰÑAsyncHttpClientºÍUniversal-Image-LoaderµÄÓŵ㼯ÓÚÁËÒ»Éí£¬¼È¿ÉÒÔÏñAsyncHttpClientÒ»Ñù·Ç³£¼òµ¥µØ½øÐÐHTTPͨÐÅ£¬Ò²¿ÉÒÔÏñUniversal-Image-LoaderÒ»ÑùÇáËɼÓÔØÍøÂçÉϵÄͼƬ¡£³ýÁ˼òµ¥Ò×ÓÃÖ®Í⣬VolleyÔÚÐÔÄÜ·½ÃæÒ²½øÐÐÁË´ó·ù¶ÈµÄµ÷Õû£¬ËüµÄÉè¼ÆÄ¿±ê¾ÍÊǷdz£ÊʺÏÈ¥½øÐÐÊý¾ÝÁ¿²»´ó£¬µ«Í¨ÐÅÆµ·±µÄÍøÂç²Ù×÷£¬¶ø¶ÔÓÚ´óÊý¾ÝÁ¿µÄÍøÂç²Ù×÷£¬±ÈÈç˵ÏÂÔØÎļþµÈ£¬VolleyµÄ±íÏ־ͻá·Ç³£Ôã¸â¡£
ÏÂͼËùʾµÄÕâЩӦÓö¼ÊÇÊôÓÚÊý¾ÝÁ¿²»´ó£¬µ«ÍøÂçͨÐÅÆµ·±µÄ£¬Òò´Ë·Ç³£ÊʺÏʹÓÃVolley¡£

2. ÏÂÔØVolley
½éÉÜÁËÕâô¶àÀíÂ۵Ķ«Î÷£¬ÏÂÃæÎÒÃǾÍ×¼±¸¿ªÊ¼½øÐÐʵսÁË£¬Ê×ÏÈÐèÒª½«VolleyµÄjar°ü×¼±¸ºÃ£¬Èç¹ûÄãµÄµçÄÔÉÏ×°ÓÐGit£¬¿ÉÒÔʹÓÃÈçÏÂÃüÁîÏÂÔØVolleyµÄÔ´Â룺
git clone https://android.googlesource.com/platform/frameworks/volley |
ÏÂÔØÍê³Éºó½«Ëüµ¼Èëµ½ÄãµÄEclipse¹¤³ÌÀȻºóÔÙµ¼³öÒ»¸öjar°ü¾Í¿ÉÒÔÁË¡£Èç¹ûÄãµÄµçÄÔÉÏûÓÐGit£¬ÄÇôҲ¿ÉÒÔÖ±½ÓʹÓÃÎÒµ¼³öºÃµÄjar°ü£¬ÏÂÔØµØÖ·ÊÇ£ºhttp://download.csdn.net/detail/sinyu890807/7152015
¡£
н¨Ò»¸öAndroidÏîÄ¿£¬½«volley.jarÎļþ¸´ÖƵ½libsĿ¼Ï£¬ÕâÑù×¼±¸¹¤×÷¾ÍËãÊÇ×öºÃÁË¡£
3. StringRequestµÄÓ÷¨
Ç°ÃæÒѾ˵¹ý£¬VolleyµÄÓ÷¨·Ç³£¼òµ¥£¬ÄÇôÎÒÃǾʹÓ×î»ù±¾µÄHTTPͨÐÅ¿ªÊ¼Ñ§Ï°°É£¬¼´·¢ÆðÒ»ÌõHTTPÇëÇó£¬È»ºó½ÓÊÕHTTPÏìÓ¦¡£Ê×ÏÈÐèÒª»ñÈ¡µ½Ò»¸öRequestQueue¶ÔÏ󣬿ÉÒÔµ÷ÓÃÈçÏ·½·¨»ñÈ¡µ½£º
RequestQueue mQueue = Volley.newRequestQueue(context); |
×¢ÒâÕâÀïÄõ½µÄRequestQueueÊÇÒ»¸öÇëÇó¶ÓÁжÔÏó£¬Ëü¿ÉÒÔ»º´æËùÓеÄHTTPÇëÇó£¬È»ºó°´ÕÕÒ»¶¨µÄËã·¨²¢·¢µØ·¢³öÕâЩÇëÇó¡£RequestQueueÄÚ²¿µÄÉè¼Æ¾ÍÊǷdz£ºÏÊʸ߲¢·¢µÄ£¬Òò´ËÎÒÃDz»±ØÎªÃ¿Ò»´ÎHTTPÇëÇó¶¼´´½¨Ò»¸öRequestQueue¶ÔÏó£¬ÕâÊǷdz£ÀË·Ñ×ÊÔ´µÄ£¬»ù±¾ÉÏÔÚÿһ¸öÐèÒªºÍÍøÂç½»»¥µÄActivityÖд´½¨Ò»¸öRequestQueue¶ÔÏó¾Í×ã¹»ÁË¡£
½ÓÏÂÀ´ÎªÁËÒª·¢³öÒ»ÌõHTTPÇëÇó£¬ÎÒÃÇ»¹ÐèÒª´´½¨Ò»¸öStringRequest¶ÔÏó£¬ÈçÏÂËùʾ£º
StringRequest stringRequest = new StringRequest("http://www.baidu.com", new Response.Listener<String>() { @Override public void onResponse(String response) { Log.d("TAG", response); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { Log.e("TAG", error.getMessage(), error); } }); |
¿ÉÒÔ¿´µ½£¬ÕâÀïnew³öÁËÒ»¸öStringRequest¶ÔÏó£¬StringRequestµÄ¹¹Ô캯ÊýÐèÒª´«ÈëÈý¸ö²ÎÊý£¬µÚÒ»¸ö²ÎÊý¾ÍÊÇÄ¿±ê·þÎñÆ÷µÄURLµØÖ·£¬µÚ¶þ¸ö²ÎÊýÊÇ·þÎñÆ÷ÏìÓ¦³É¹¦µÄ»Øµ÷£¬µÚÈý¸ö²ÎÊýÊÇ·þÎñÆ÷ÏìӦʧ°ÜµÄ»Øµ÷¡£ÆäÖУ¬Ä¿±ê·þÎñÆ÷µØÖ·ÎÒÃÇÌîдµÄÊǰٶȵÄÊ×Ò³£¬È»ºóÔÚÏìÓ¦³É¹¦µÄ»Øµ÷Àï´òÓ¡³ö·þÎñÆ÷·µ»ØµÄÄÚÈÝ£¬ÔÚÏìӦʧ°ÜµÄ»Øµ÷Àï´òÓ¡³öʧ°ÜµÄÏêϸÐÅÏ¢¡£
×îºó£¬½«Õâ¸öStringRequest¶ÔÏóÌí¼Óµ½RequestQueueÀïÃæ¾Í¿ÉÒÔÁË£¬ÈçÏÂËùʾ£º
mQueue.add(stringRequest); |
ÁíÍ⣬ÓÉÓÚVolleyÊÇÒª·ÃÎÊÍøÂçµÄ£¬Òò´Ë²»ÒªÍü¼ÇÔÚÄãµÄAndroidManifest.xmlÖÐÌí¼ÓÈçÏÂȨÏÞ£º
<uses-permission android:name="android.permission.INTERNET" /> |
ºÃÁË£¬¾ÍÊÇÕâô¼òµ¥£¬Èç¹ûÄãÏÖÔÚÔËÐÐһϳÌÐò£¬²¢·¢³öÕâÑùÒ»ÌõHTTPÇëÇ󣬾ͻῴµ½LogCatÖлá´òÓ¡³öÈçÏÂͼËùʾµÄÊý¾Ý¡£

û´í£¬°Ù¶È·µ»Ø¸øÎÒÃǵľÍÊÇÕâÑùÒ»³¤´®µÄHTML´úÂ룬ËäÈ»ÎÒÃÇ¿´ÆðÀ´»áÓÐЩ³ÔÁ¦£¬µ«ÊÇä¯ÀÀÆ÷È´¿ÉÒÔÇáËɵضÔÕâ¶ÎHTML´úÂë½øÐнâÎö£¬È»ºó½«°Ù¶ÈµÄÊ×Ò³Õ¹ÏÖ³öÀ´¡£
ÕâÑùµÄ»°£¬Ò»¸ö×î»ù±¾µÄHTTP·¢ËÍÓëÏìÓ¦µÄ¹¦ÄܾÍÍê³ÉÁË¡£Äã»á·¢ÏÖ¸ù±¾»¹Ã»Ð´¼¸ÐдúÂë¾ÍÇáÒ×ʵÏÖÁËÕâ¸ö¹¦ÄÜ£¬Ö÷Òª¾ÍÊǽøÐÐÁËÒÔÏÂÈý²½²Ù×÷£º
1. ´´½¨Ò»¸öRequestQueue¶ÔÏó¡£
2. ´´½¨Ò»¸öStringRequest¶ÔÏó¡£
3. ½«StringRequest¶ÔÏóÌí¼Óµ½RequestQueueÀïÃæ¡£
²»¹ý´ó¼Ò¶¼ÖªµÀ£¬HTTPµÄÇëÇóÀàÐÍͨ³£ÓÐÁ½ÖÖ£¬GETºÍPOST£¬¸Õ²ÅÎÒÃÇʹÓõÄÃ÷ÏÔÊÇÒ»¸öGETÇëÇó£¬ÄÇôÈç¹ûÏëÒª·¢³öÒ»ÌõPOSTÇëÇóÓ¦¸ÃÔõô×öÄØ£¿StringRequestÖл¹ÌṩÁËÁíÍâÒ»ÖÖËĸö²ÎÊýµÄ¹¹Ô캯Êý£¬ÆäÖеÚÒ»¸ö²ÎÊý¾ÍÊÇÖ¸¶¨ÇëÇóÀàÐ͵ģ¬ÎÒÃÇ¿ÉÒÔʹÓÃÈçÏ·½Ê½½øÐÐÖ¸¶¨£º
StringRequest stringRequest = new StringRequest(Method.POST, url, listener, errorListener); |
¿ÉÊÇÕâÖ»ÊÇÖ¸¶¨ÁËHTTPÇëÇó·½Ê½ÊÇPOST£¬ÄÇôÎÒÃÇÒªÌá½»¸ø·þÎñÆ÷µÄ²ÎÊýÓÖ¸ÃÔõôÉèÖÃÄØ£¿ºÜÒź¶£¬StringRequestÖв¢Ã»ÓÐÌṩÉèÖÃPOST²ÎÊýµÄ·½·¨£¬µ«Êǵ±·¢³öPOSTÇëÇóµÄʱºò£¬Volley»á³¢ÊÔµ÷ÓÃStringRequestµÄ¸¸Àࡪ¡ªRequestÖеÄgetParams()·½·¨À´»ñÈ¡POST²ÎÊý£¬ÄÇô½â¾ö·½·¨×ÔȻҲ¾ÍÓÐÁË£¬ÎÒÃÇÖ»ÐèÒªÔÚStringRequestµÄÄäÃûÀàÖÐÖØÐ´getParams()·½·¨£¬ÔÚÕâÀïÉèÖÃPOST²ÎÊý¾Í¿ÉÒÔÁË£¬´úÂëÈçÏÂËùʾ£º
StringRequest stringRequest = new StringRequest(Method.POST, url, listener, errorListener) { @Override protected Map<String, String> getParams() throws AuthFailureError { Map<String, String> map = new HashMap<String, String>(); map.put("params1", "value1"); map.put("params2", "value2"); return map; } }; |
Äã¿ÉÄÜ»á˵£¬Ã¿´Î¶¼ÕâÑùÓÃÆðÀ´Æñ²»ÊǺÜÀÛ£¿Á¬¸öÉèÖÃPOST²ÎÊýµÄ·½·¨¶¼Ã»ÓС£µ«ÊDz»ÒªÍü¼Ç£¬VolleyÊÇ¿ªÔ´µÄ£¬Ö»ÒªÄãÔ¸Ò⣬Äã¿ÉÒÔ×ÔÓɵØÔÚÀïÃæÌí¼ÓºÍÐÞ¸ÄÈκεķ½·¨£¬ÇáËɾÍÄܶ¨ÖƳöÒ»¸öÊôÓÚÄã×Ô¼ºµÄVolley°æ±¾¡£
4. JsonRequestµÄÓ÷¨
ѧÍêÁË×î»ù±¾µÄStringRequestµÄÓ÷¨£¬ÎÒÃÇÔÙÀ´½ø½×ѧϰһÏÂJsonRequestµÄÓ÷¨¡£ÀàËÆÓÚStringRequest£¬JsonRequestÒ²ÊǼ̳Ð×ÔRequestÀàµÄ£¬²»¹ýÓÉÓÚJsonRequestÊÇÒ»¸ö³éÏóÀ࣬Òò´ËÎÒÃÇÎÞ·¨Ö±½Ó´´½¨ËüµÄʵÀý£¬ÄÇôֻÄÜ´ÓËüµÄ×ÓÀàÈëÊÖÁË¡£JsonRequestÓÐÁ½¸öÖ±½ÓµÄ×ÓÀ࣬JsonObjectRequestºÍJsonArrayRequest£¬´ÓÃû×ÖÉÏÄãÓ¦¸ÃÄܾͿ´³öËüÃǵÄÇø±ðÁ˰ɣ¿Ò»¸öÊÇÓÃÓÚÇëÇóÒ»¶ÎJSONÊý¾ÝµÄ£¬Ò»¸öÊÇÓÃÓÚÇëÇóÒ»¶ÎJSONÊý×éµÄ¡£
ÖÁÓÚËüÃǵÄÓ÷¨Ò²»ù±¾ÉÏûÓÐÊ²Ã´ÌØÊâÖ®´¦£¬ÏÈnew³öÒ»¸öJsonObjectRequest¶ÔÏó£¬ÈçÏÂËùʾ£º
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest("http://m.weather.com.cn/data/101010100.html", null, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { Log.d("TAG", response.toString()); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { Log.e("TAG", error.getMessage(), error); } }); |
¿ÉÒÔ¿´µ½£¬ÕâÀïÎÒÃÇÌîдµÄURLµØÖ·ÊÇhttp://m.weather.com.cn/data/101010100.html£¬ÕâÊÇÖйúÌìÆøÍøÌṩµÄÒ»¸ö²éѯÌìÆøÐÅÏ¢µÄ½Ó¿Ú£¬ÏìÓ¦µÄÊý¾Ý¾ÍÊÇÒÔJSON¸ñʽ·µ»ØµÄ£¬È»ºóÎÒÃÇÔÚonResponse()·½·¨Öн«·µ»ØµÄÊý¾Ý´òÓ¡³öÀ´¡£
×îºóÔÙ½«Õâ¸öJsonObjectRequest¶ÔÏóÌí¼Óµ½RequestQueueÀï¾Í¿ÉÒÔÁË£¬ÈçÏÂËùʾ£º
mQueue.add(jsonObjectRequest); |
ÕâÑùµ±HTTPͨÐÅÍê³ÉÖ®ºó£¬·þÎñÆ÷ÏìÓ¦µÄÌìÆøÐÅÏ¢¾Í»á»Øµ÷µ½onResponse()·½·¨ÖУ¬²¢´òÓ¡³öÀ´¡£ÏÖÔÚÔËÐÐһϳÌÐò£¬·¢³öÕâÑùÒ»ÌõHTTPÇëÇ󣬾ͻῴµ½LogCatÖлá´òÓ¡³öÈçÏÂͼËùʾµÄÊý¾Ý¡£

ÓÉ´Ë¿ÉÒÔ¿´³ö£¬·þÎñÆ÷·µ»Ø¸øÎÒÃǵÄÊý¾ÝȷʵÊÇJSON¸ñʽµÄ£¬²¢ÇÒonResponse()·½·¨ÖÐЯ´øµÄ²ÎÊýÒ²ÕýÊÇÒ»¸öJSONObject¶ÔÏó£¬Ö®ºóÖ»ÐèÒª´ÓJSONObject¶ÔÏóÈ¡³öÎÒÃÇÏëÒªµÃµ½µÄÄDz¿·ÖÊý¾Ý¾Í¿ÉÒÔÁË¡£
ÄãÓ¦¸Ã·¢ÏÖÁ˰ɣ¬JsonObjectRequestµÄÓ÷¨ºÍStringRequestµÄÓ÷¨»ù±¾ÉÏÊÇÍêȫһÑùµÄ£¬VolleyµÄÒ×ÓÃÖ®´¦Ò²ÔÚÕâÀïÌåÏÖ³öÀ´ÁË£¬»áÁËÒ»Ö־ͿÉÒÔÈÃÄã¾ÙÒ»·´Èý£¬Òò´Ë¹ØÓÚJsonArrayRequestµÄÓ÷¨ÏàÐÅÒѾ²»ÐèÒªÎÒÔÙÈ¥½²½âÁ˰ɡ£ |