yy1.4 HttpUtils回调方法的再次封装 返回JSON对象
1 public class MainActivity extends Activity { 2 3 private String PATH = "https://www.baidu.com/"; 4 5 public static final String BAIKEPATH = "http://sns.maimaicha.com/api?apikey=b4f4ee31a8b9acc866ef2afb754c33e6&format=json&method=news.getListByType"; 6 7 public static final String TOUTIAO = "http://sns.maimaicha.com/api?apikey=b4f4ee31a8b9acc866ef2afb754c33e6&format=json&method=news.getHeadlines"; 8 9 private TextView mTv; 10 11 private HttpUtils mHttpUtils; 12 13 private HttpHandler<String> mHttpHandler; 14 15 @Override 16 protected void onCreate(Bundle savedInstanceState) { 17 super.onCreate(savedInstanceState); 18 setContentView(R.layout.activity_main); 19 20 mTv = (TextView) findViewById(R.id.tv); 21 22 mHttpUtils = new HttpUtils(); 23 24 // 设置当前HttpUtils实例缓存超时的时间,以毫秒为单位 25 mHttpUtils.configCurrentHttpCacheExpiry(1); 26 } 27 28 public void request(View view) { 29 mHttpHandler = mHttpUtils.send(HttpMethod.GET, TOUTIAO, new RequestCallBackEx<DataBean>(DataBean.class) { 30 31 @Override 32 public void onSuccess(DataBean obj) { 33 Log.i("bm", obj.errorMessage); 34 Log.i("bm", obj.data.toString()); 35 } 36 37 /** 38 * 请求失败的时候会回调,并且将失败的原因返回 39 */ 40 @Override 41 public void onFailure(HttpException arg0, String arg1) { 42 arg0.printStackTrace(); 43 Log.i("bm", arg0.toString()); 44 Log.i("bm", arg1); 45 } 46 }); 47 } 48 49 public void cancel(View view) { 50 mHttpHandler.cancel(); 51 } 52 }
1 public abstract class RequestCallBackEx<T> extends RequestCallBack<String> { 2 3 private Class<T> mClass; 4 5 public RequestCallBackEx(Class<T> cls) { 6 mClass = cls; 7 } 8 9 @Override 10 public void onSuccess(ResponseInfo<String> arg0) { 11 try { 12 String data = arg0.result; 13 14 if (data != null) { 15 T obj = JSON.parseObject(data, mClass); 16 onSuccess(obj); 17 } 18 } catch (Exception e) { 19 onFailure(new HttpException(e), e.toString()); 20 } 21 } 22 23 public abstract void onSuccess(T obj); 24 }
1 public class DataBean { 2 public List<Item> data; 3 public String errorMessage; 4 5 public static class Item { 6 public String id; 7 public String title; 8 public String source; 9 public String description; 10 public String wap_thumb; 11 public String create_time; 12 public String nickname; 13 14 @Override 15 public String toString() { 16 return "Item [title=" + title + "]"; 17 } 18 } 19 }