首页 > 代码库 > AndroidInject项目使用动态代理增加对网络请求的支持
AndroidInject项目使用动态代理增加对网络请求的支持
详细代码:
http://www.cnblogs.com/tiantianbyconan/p/3540427.html
AndroidInject项目是我写的一个使用注解注入来简化代码的开源项目
https://github.com/wangjiegulu/androidInject
今天新增功能如下:
1. 增加@AIScreenSize注解,作用于属性,用于注入当前设备的屏幕大小(宽高)
2. 增加对网络请求的支持,使用动态代理实现:@AIGet注解,作用于接口方法,表示以GET来请求url;@AIPost注解,作用于接口方法,表示以POST来请求url;@AIParam,用于注入请求参数
3. 增加@AINetWorker注解,作用于属性,用于注入网络请求服务
4. 增加GET或POST请求时请求参数可使用Params类传入,简化代码
http://www.cnblogs.com/tiantianbyconan/p/3540427.html
AndroidInject项目是我写的一个使用注解注入来简化代码的开源项目
https://github.com/wangjiegulu/androidInject
今天新增功能如下:
1. 增加@AIScreenSize注解,作用于属性,用于注入当前设备的屏幕大小(宽高)
2. 增加对网络请求的支持,使用动态代理实现:@AIGet注解,作用于接口方法,表示以GET来请求url;@AIPost注解,作用于接口方法,表示以POST来请求url;@AIParam,用于注入请求参数
3. 增加@AINetWorker注解,作用于属性,用于注入网络请求服务
4. 增加GET或POST请求时请求参数可使用Params类传入,简化代码
标签:Gson
[1].[代码] [Java]代码 跳至[1]
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | // 用@AINetWorker注解注入NetWorker接口的子类代理(动态代理模式): @AINetWorker private PersonWorker personWorker;
// 然后启动线程,在线程中调用进行网络请求: new Thread( new Runnable() { @Override public void run() {
// RetMessage<Person> retMsg = personWorker.getPersonsForGet("a1", "b1", "c1"); // RetMessage<Person> retMsg = personWorker.getPersonsForGet2(new Params().add("aa", "a1").add("bb", "b1").add("cc", "c1")); RetMessage<Person> retMsg = personWorker.getPersonsForPost2( new Params().add( "aa" , "a1" ).add( "bb" , "b1" ).add( "cc" , "c1" )); System.out.println(retMsg.getList().toString()); }
}).start();
// 请求的结果封装在RetMessage类中(AndroidInject框架所作的事就是执行Get或者Post请求,获得返回结果,然后json解析后封装在RetMessage中): /**
* Json响应结果包装类
* Created with IntelliJ IDEA.
* Author: wangjie email:tiantian.china.2@gmial.com
* Date: 14-2-7
* Time: 下午4:25
*/ public class RetMessage<T> { private int resultCode; // 结果码,必须包含 private List<T> list; // 返回的数据 private T obj; // 返回的数据 private Integer size; // 返回数据长度 private String errorMessage; // 返回错误信息 public String toJson(){ return new Gson().toJson( this ); } // getter和setter方法省略... }
// 接下来看下PersonWorker接口中所作的事情: /**
* Created with IntelliJ IDEA.
* Author: wangjie email:tiantian.china.2@gmail.com
* Date: 14-2-7
* Time: 下午1:44
*/ public interface PersonWorker { @AIGet ( "http://192.168.2.198:8080/HelloSpringMVC/person/findPersons?aa=#{a3}&bb=#{b3}&cc=#{c3}" ) public RetMessage<Person> getPersonsForGet( @AIParam ( "a3" )String a2, @AIParam ( "b3" ) String b2, @AIParam ( "c3" ) String c2); @AIPost ( "http://192.168.2.198:8080/HelloSpringMVC/person/findPersons" ) public RetMessage<Person> getPersonsForPost( @AIParam ( "aa" )String a2, @AIParam ( "bb" ) String b2, @AIParam ( "cc" ) String c2); @AIGet ( "http://192.168.2.198:8080/HelloSpringMVC/person/findPersons" ) public RetMessage<Person> getPersonsForGet2(Params params); @AIPost ( "http://192.168.2.198:8080/HelloSpringMVC/person/findPersons" ) public RetMessage<Person> getPersonsForPost2(Params params); } /** *另:如果,你需要写一个查询User信息的网络请求,应该怎么写? *只需编写UserWorker接口,然后声明方法findUsers(),写上@AIGet或者@AIPost注解,写明url和请求参*数。然后通过@AINetWorker注解注入userWorker,然后开启线程,调用userWorker的findUsers()方法即可。 *当然UserWorker也可以不使用注解获得,而是调用“NetInvoHandler.getWorker(UserWorker.class)”获得! */ |
AndroidInject项目使用动态代理增加对网络请求的支持
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。