Android自定义的http网络框架

Android自定义的http网络框架

 

  为什么要自定义网络框架:

      Android项目中,40%以上会涉及到与后台的http网络交互。通常的项目都会

  用第三方的网络框架。第三方的网络框架存在扩展性低,兼容性等问题。

     

  自定义http网络框架的优点:高性能、高扩展、兼容性好。

    

 

  下面要实现的网络框架的特点:

      1、调用层傻瓜式调用网络请求,用户只需要传入Url,请求参数,所需要请求的类型

      2、支持json、图片、音频请求,可根据业务场景需要进行扩展

      3、回调的结果发生在主线程

 

   

      4、高性能,支持高并发,请求队列依次获取,可以设置最大并发数

  实现思路:

  http网络请求流程:应用层(Activty)持有IrosonseListeren调用Volley层,Volley根据不同的请求类型(json、图片、音频)生产不同的Httptask,Httptask根据请求类型切换到子线程调用不同的IhttpService,IhttpService持有Ihttplistener进行网络请求和获取inputStream,Ihttplistener解析inputSteam后,切换到主线程,让应用层Activity回调IrosonseListeren获取网络请求返回的值。

      1、应用了生成者消费者模式,应用层(Activity)生成任务,放入请求队列,

      供线程池(threadPool)调用。

      2、应用了策略模式,使得不同的请求实现IhttpService ,选择执行

   json、图片、音频等网络请求和处理,保证了功能的扩展性。

      3、使用了装饰器模式,将请求类型的选择处理逻辑放在了Volley层,使得

   应用层可以傻瓜式调用。

 

  实现思路图:

      


代码实现:

public class MainActivity extends AppCompatActivity {

    private String url="http://114.55.30.161/nms3/mmsWebDeviceThree/getDeviceByOrgans.do";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    }

    public void volleynet(View view){
        TaskParams tp=new TaskParams(url,
//                new String[]{"home_id", ""},
                new String[]{"organId", "15"}

        );
        //json请求
        Volley.sendjsonRequest(tp.getEncodeParams(), tp.getUrl(), new IJsonListener() {

            @Override
            public void onSuccess(String response) {
                Log.e("jjjjjj","userResponse---->"+response.toString());
                Toast.makeText(getApplicationContext(),response.toString(),Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onError() {

            }
        });

        //图片请求扩展
//        Volley.sendImgRequest(tp.getEncodeParams(), tp.getUrl(), new IImagListener() {
//
//            @Override
//            public void onSuccess(String response) {
//
//            }
//
//            @Override
//            public void onError() {
//
//            }
//        });

        //获取音频扩展
    }
}

public class TaskParams {

	//http://192.168.1.50:4501/IF/SIM/sim_task.aspx?CELL_WIDTH=800&CELL_HEIGHT=480&BOX_SIGNATURE=070457c801902417668&number=2&task_type=0
	private static String CELL_WIDTH="CELL_WIDTH";
	private static String CELL_HEIGHT="CELL_HEIGHT";
	private static String BOX_SIGNATURE="BOX_SIGNATURE";
	private String url;
	private static String NUM = "number";
	private static Str
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
对于Android网络框架的封装,有许多不同的选择。以下是一些常见的网络框架和封装方法: 1. Volley:Volley是Google推出的用于Android应用程序的网络通信库。它使用简单且易于集成,具有高效的网络请求队列和缓存机制。你可以封装Volley以满足你的特定需求,例如添加身份验证、错误处理或数据解析等功能。 2. OkHttp:OkHttp是一个开源的HTTP客户端库,可用于Android应用程序中的网络通信。它提供了简单易用的API,支持同步和异步请求,并具有连接池和缓存等功能。你可以使用OkHttp封装网络请求,自定义拦截器和事件监听器,以及处理各类错误和异常情况。 3. Retrofit:Retrofit是Square公司开发的一个类型安全的RESTful网络请求库。它基于OkHttp,并提供了简洁的注解接口来定义API请求。你可以封装Retrofit以定义你的API接口和请求参数,并处理响应结果、错误情况和数据解析等。 4. 自定义封装:除了使用现有的网络框架,你还可以根据你的需求自定义封装一个网络库。这种方式可以灵活地满足特定的业务需求。你可以使用Java的URLConnection或Apache HttpClient等原生库进行底层网络通信,并自定义请求、解析和错误处理等逻辑。 在封装网络框架时,你可以考虑以下几点: - 封装请求方法(GET、POST等)和参数(URL、请求头、请求体等)的接口。 - 统一处理错误和异常情况,例如网络连接失败、超时、服务器错误等。 - 可选地处理数据解析和转换,例如使用Gson库将JSON数据转换为Java对象。 - 支持并发请求和线程管理,以避免阻塞主线程。 - 可选地添加缓存机制,以减少重复请求和提高性能。 - 可选地添加身份验证和安全机制,以保护数据的传输和存储安全。 以上是一些常见的Android网络框架封装方法,你可以根据具体需求选择适合你项目的框架自定义封装。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

慕容屠苏

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值