zoukankan      html  css  js  c++  java
  • Volley 结合GSON或FastJson用法

    自定义GSON类

     1 public class GsonRequest<T> extends Request<T> {
     2     private final Gson mGson = new Gson();
     3     private final Class<T> mClazz;
     4     private final Listener<T> mListener;
     5     private final Map<String, String> mHeaders;
     6 
     7     public GsonRequest(String url, Class<T> clazz, Listener<T> listener, ErrorListener errorListener) {
     8         this(Method.GET, url, clazz, null, listener, errorListener);
     9     }
    10 
    11     public GsonRequest(int method, String url, Class<T> clazz, Map<String, String> headers,
    12             Listener<T> listener, ErrorListener errorListener) {
    13         super(method, url, errorListener);
    14         this.mClazz = clazz;
    15         this.mHeaders = headers;
    16         this.mListener = listener;
    17     }
    18 
    19     @Override
    20     public Map<String, String> getHeaders() throws AuthFailureError {
    21         return mHeaders != null ? mHeaders : super.getHeaders();
    22     }
    23 
    24     @Override
    25     protected void deliverResponse(T response) {
    26         mListener.onResponse(response);
    27     }
    28 
    29     @Override
    30     protected Response<T> parseNetworkResponse(NetworkResponse response) {
    31         try {
    32             String json = new String(response.data, HttpHeaderParser.parseCharset(response.headers));
    33             return Response.success(mGson.fromJson(json, mClazz),
    34                     HttpHeaderParser.parseCacheHeaders(response));
    35         } catch (UnsupportedEncodingException e) {
    36             return Response.error(new ParseError(e));
    37         } catch (JsonSyntaxException e) {
    38             return Response.error(new ParseError(e));
    39         }
    40     }
    41 }
    View Code

    自定义FastJson类

     1 public class FastJsonRequest<T> extends Request<T> { 
     2     private final Class<T> mClazz;
     3     private final Listener<T> mListener;
     4     private final Map<String, String> mHeaders;
     5 
     6     public FastJsonRequest(String url, Class<T> clazz, Listener<T> listener, ErrorListener errorListener) {
     7         this(Method.GET, url, clazz, null, listener, errorListener);
     8     }
     9 
    10     public FastJsonRequest(int method, String url, Class<T> clazz, Map<String, String> headers,
    11             Listener<T> listener, ErrorListener errorListener) {
    12         super(method, url, errorListener);
    13         this.mClazz = clazz;
    14         this.mHeaders = headers;
    15         this.mListener = listener;
    16     }
    17 
    18     @Override
    19     public Map<String, String> getHeaders() throws AuthFailureError {
    20         return mHeaders != null ? mHeaders : super.getHeaders();
    21     }
    22 
    23     @Override
    24     protected void deliverResponse(T response) {
    25         mListener.onResponse(response);
    26     }
    27 
    28     @Override
    29     protected Response<T> parseNetworkResponse(NetworkResponse response) {
    30         try {
    31             String json = new String(response.data, HttpHeaderParser.parseCharset(response.headers));
    32             return Response.success(JSON.parseObject(json, mClazz),
    33                     HttpHeaderParser.parseCacheHeaders(response));
    34         } catch (UnsupportedEncodingException e) {
    35             return Response.error(new ParseError(e));
    36         }  
    37     }
    38 }
    View Code

    JAR下载

    所有JAR

     1 public class MainActivity extends Activity {
     2     private Context context;
     3     private String url="http://www.weather.com.cn/data/sk/101010100.html";
     4     private TextView text;
     5     
     6     @Override
     7     protected void onCreate(Bundle savedInstanceState) {
     8         super.onCreate(savedInstanceState);
     9         setContentView(R.layout.activity_main);
    10         context=this;
    11          text=(TextView)this.findViewById(R.id.txttitle);
    12         RequestQueue mQueue = Volley.newRequestQueue(context);
    13         FastJsonRequest<Weather> fastJson=new FastJsonRequest<Weather>(url, Weather.class,
    14                 new Response.Listener<Weather>() {
    15 
    16                     @Override
    17                     public void onResponse(Weather weather) {
    18                         // TODO Auto-generated method stub
    19                           WeatherInfo weatherInfo = weather.getWeatherinfo();
    20                           text.setText(weatherInfo.getCity());
    21                     }
    22                 }, new Response.ErrorListener() {
    23 
    24                     @Override
    25                     public void onErrorResponse(VolleyError arg0) {
    26                         // TODO Auto-generated method stub
    27                         
    28                     }
    29                 });
    30         mQueue.add(fastJson);
    31         
    32         GsonRequest<Weather> gsonRequest=new GsonRequest<Weather>(url, Weather.class,
    33                 new Response.Listener<Weather>() {
    34 
    35                     @Override
    36                     public void onResponse(Weather weather) {
    37                         // TODO Auto-generated method stub
    38                          WeatherInfo weatherInfo = weather.getWeatherinfo();
    39                           text.setText(text.getText()+weatherInfo.getTime());
    40                     }
    41                 }, new Response.ErrorListener() {
    42 
    43                     @Override
    44                     public void onErrorResponse(VolleyError arg0) {
    45                         // TODO Auto-generated method stub
    46                         
    47                     }
    48                 });
    49         mQueue.add(gsonRequest);
    50         
    51         
    52     } 
    53 }
    View Code

    Model类

     1 public class Weather {
     2     private WeatherInfo weatherinfo;  
     3       
     4     public WeatherInfo getWeatherinfo() {  
     5         return weatherinfo;  
     6     }  
     7   
     8     public void setWeatherinfo(WeatherInfo weatherinfo) {  
     9         this.weatherinfo = weatherinfo;  
    10     }  
    11 }
    View Code
     1 public class WeatherInfo {
     2     private String city;  
     3       
     4     private String temp;  
     5   
     6     private String time;  
     7   
     8     public String getCity() {  
     9         return city;  
    10     }  
    11   
    12     public void setCity(String city) {  
    13         this.city = city;  
    14     }  
    15   
    16     public String getTemp() {  
    17         return temp;  
    18     }  
    19   
    20     public void setTemp(String temp) {  
    21         this.temp = temp;  
    22     }  
    23   
    24     public String getTime() {  
    25         return time;  
    26     }  
    27   
    28     public void setTime(String time) {  
    29         this.time = time;  
    30     }  
    31 }
    View Code

    早期记录 http://www.cnblogs.com/freexiaoyu/p/3446028.html

  • 相关阅读:
    模拟算法(八)
    迭代算法(七)
    试探法是一种委婉的做法(六)
    贪心算法并不贪婪(五)
    各个击破的分治算法(四)
    充分利用自己的递归算法(三)
    一起学Spring之Web基础篇
    C# 利用AForge进行摄像头信息采集
    一起学Spring之注解和Schema方式实现AOP
    一起学Spring之AOP
  • 原文地址:https://www.cnblogs.com/freexiaoyu/p/3955137.html
Copyright © 2011-2022 走看看