基于网络请求框架的封装
2017-04-19 23:54
411 查看
平时开发我们需要用到网络请求框架例如volley和okhttp,但是有时我们需要更换请求框架,下面 就是一个基于代理模式的封装方便我们切换框架。
首先定义一个接口,执行请求的类都会实现这个接口
然后是一个结果回调接口,
具体实现方法需要自己完善。
上面是一个测试用的activity,可以看到是一个链式调用,很方便。还有就是真正测试时需要导入使用的网络框架,然后权限获取。
首先定义一个接口,执行请求的类都会实现这个接口
package com.example.blank.netprocessor.Processor; import java.util.Map; /** * 作者:Blank on 2017/4/19 22:57 * 邮箱:yingyuwudi@163.com */ public interface IHttpProcessor { void get(String url, Map<String, Object> param, Callback callback); void post(String url, Map<String, Object> param, Callback callback); }
然后是一个结果回调接口,
package com.example.blank.netprocessor.Processor; /** * 作者:Blank on 2017/4/19 22:59 * 邮箱:yingyuwudi@163.com */ public interface Callback { void Success(String result); void Failure(Exception e); }然后,我们再定义一个HttpHelper,使用变种代理模式进行请求转发,变种构建者模式进行参数构建。
package com.example.blank.netprocessor.Processor; import java.util.HashMap; import java.util.Map; /** * 作者:Blank on 2017/4/19 23:03 * 邮箱:yingyuwudi@163.com */ public class HttpHelper { private static final int REQUEST_TYPE_GET = 0; private static final int REQUEST_TYPE_POST = 1; private int mDefaultType; public static IHttpProcessor mIHttpProcessor; private String mUrl; private Map<String, Object> mParams; public HttpHelper() { mParams = new HashMap<>(); } public static void init(IHttpProcessor iHttpProcessor) { mIHttpProcessor = iHttpProcessor; } public static HttpHelper obtain() { return new HttpHelper(); } /** * 代理get请求 */ public void get(Callback callback) { mDefaultType = REQUEST_TYPE_GET; request(callback); } /** * 代理po请求 * * @param callback */ public void post(Callback callback) { mDefaultType = REQUEST_TYPE_POST; request(callback); } //真正的请求 private void request(Callback callback) { switch (mDefaultType) { case REQUEST_TYPE_GET: mIHttpProcessor.get(mUrl, mParams, callback); break; case REQUEST_TYPE_POST: mIHttpProcessor.post(mUrl, mParams, callback); break; } } public HttpHelper url(String url) { this.mUrl = url; return this; } public HttpHelper params(Map<String,Object> params) { this.mParams = params; return this; } }
package com.example.blank.netprocessor.activity; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import com.example.blank.netprocessor.Processor.Callback; import com.example.blank.netprocessor.Processor.HttpHelper; import com.example.blank.netprocessor.R; import java.util.HashMap; import java.util.Map; public class MainActivity extends AppCompatActivity { private String url = ""; private Map<String,Object> params = new HashMap<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); HttpHelper.obtain() .url(url) .params(params) .get(new Callback() { @Override public void Success(String result) { } @Override public void Failure(Exception e) { } }); } }
具体实现方法需要自己完善。
上面是一个测试用的activity,可以看到是一个链式调用,很方便。还有就是真正测试时需要导入使用的网络框架,然后权限获取。
相关文章推荐
- iOS 对基于AFNetworking框架网络请求的简单封装
- 基于Retrofit2封装网络请求框架
- Android基于http封装的网络请求框架
- [置顶] 优雅设计封装基于Okhttp3的网络框架(完):原生HttpUrlConnction请求、多线程分发 及 数据转换
- Android 网络请求框架,包涵get,post请求,from表单上传图片,基于okhtt封装的图片上传
- android基于开源网络框架asychhttpclient,二次封装为通用网络请求组件
- 基于OkHttp3封装网络请求框架
- 一:网络请求框架封装范例-基于volley
- android基于开源网络框架asychhttpclient,二次封装为通用网络请求组件
- 基于AFNetWorking封装一个网络请求数据的类
- Android网络请求框架AsyncHttp二次封装
- IOS 网络请求框架封装
- 安卓网络请求框架okHttp的使用与封装
- Android基于http的网络请求async-http框架
- Anroid-async-http封装网络请求框架源码分析
- android http——网络请求二次封装的框架设计
- 源码推荐(01.04B):基于AFNetworking3.0的网络请求封装,iOS仿苹果健康折线图
- 基于AFNetworking封装的网络请求工具类
- XDroidRequest - 一款基于Android 6.0 网络请求框架
- 根据volley网络请求框架封装好的get请求和post请求