* 创建一个简单的请求框架. * 并且希望提供使用离线数据,来模拟请求的环境。 特别是当服务器没有写好后台时,可以现在代码中使用测试数据来测试Android代码写的情况。
// 这里初始化SnetConfig。 // 别忘了在Manifest中声明Application的属性: // android:name="top.wecreate.snet.demo.DemoApplication" SnetConfig.init(new SnetConfigBuilder().setConnectionTimeout(2000));
//两个虚类型,分别用于正确的结果类型和出错时的结果类型。 public abstract class DemoSnetConnection extends SnetBaseConnection<String, String> { public DemoSnetConnection(ConnetionBuilder builder) { super(builder); } //在线程中,对异常结果进行处理。 @Override protected void processExceptionBackground(Exception e) { setFailResult(e.toString()); } //在线程中,对返回结果进行处理。 @Override protected void processResponseBackground(int responseCode, Map<String, List<String>> responseHeaders, byte[] responseBody) { if (responseCode == 200) { // 网络返回值正确,处理后设置正确的值 setSuccessResult(new String(responseBody)); } else { // 不对,处理后设置错误的值。 setFailResult("网络错误"); } } //使用本地离线数据测试异常情况,可以自定义异常情况 @Override protected Exception fillTestException() { return new Exception("test exception"); } //使用本地离线数据测试正常返回。 @Override protected TestResponse fillTestResponse() { TestResponse response = new TestResponse(); response.setCode(200); response.setBody(new String("test response").getBytes()); return response; } }
//1. 构建请求所需的参数,比如url,参数之类的 ConnetionBuilder builder = new ConnetionBuilder( "http://www.wecreate.top/server.php"); Map<String, String> params = new HashMap<>(); params.put("action", "adduserinfo"); builder.setRequestParams(params); //2. 通过builder来构建请求。 DemoSnetConnection connection = new DemoSnetConnection(builder) { @Override public void onSuccess(String result) { // TODO 成功的值,此时在UI线程中 } @Override public void onFail(String result) { // TODO 失败的值,此时在UI线程中 } }; //3. 正式发起请求。两种请求方式 //connection.post(); connection.get();
在使用中有任何问题,欢迎反馈给我;或者如果你有新的想法和建议,都可以用以下联系方式跟我交流
一个喜欢写代码,但总是写不好的农民工。