将retrofit2集成到同时具有webservice和http请求的Android项目中的解决方案

本文介绍了如何在既有webService又有http请求的Android项目中集成retrofit2。首先,文章阐述了适用场景和retrofit2的基本介绍,然后通过实例讲解了如何配置依赖、进行http请求以及处理webService请求,特别是针对webService的特殊处理。在集成过程中,遇到了OkHttp3依赖冲突的问题,通过删除ksoap中冲突的库解决了问题。最后,文章总结了集成过程中的关键点和注意事项,并提供了其他学习资源。
摘要由CSDN通过智能技术生成

retrofit2集成(webService、http)

适用环境

1、项目中既有webService服务,也有http服务;
2、项目原有服务是webService或者http其中的一种,由于需求变更等原因要更换服务类型,同时要在不影响原来的服务请求的情况下进行网络框架重构;
3、写服务的换人了;<或者服务人员想装逼,彰显他会多种服务语言>

retrofit2简单介绍

retrofit是由Square公司出品的针对于Android和Java的类型安全的Http客户端。
简单的说就是一种网络请求框架,对okHttp的封装,使用面向接口的方式进行网络请求,利用动态生成的代理类封装了网络接口请求的底层,其将请求返回javaBean,对网络认证 REST API进行了很好对支持此,使用Retrofit将会极大的提高我们应用的网络体验。

【其实自己是看了github上的网络框架使用统计,排名第一的就是retrofit,所以就去稍稍的研究了一下,发现还挺好用,毕竟这热度可不是水军给刷上去的。】

下面就以我自己的项目中的例子来给大家演示一下今天的核心内容:

实例讲解

一、情景重现

为了迎合后台服务人员(以前公司的后台只会写webService)的服务类型,我们移动端选择采用比较常用ksoap网络请求框架来请求webService服务,首先以图片的形式看一下项目中ksoap网络请求的封装类。
封装好的ksoap网络请求帮助类

以上就是原来项目中用到的ksoap网络请求帮助类,看起来也还OK,但是在实际的项目中,每到一次网络请求就要new出来一个handler或者asyncTask去处理网络请求,并且代码写起来很长很冗余,导致一个页面有多个请求的时候,光关于网络请求的代码就一大堆。另外原来的项目也灭有框架可言,基本大部分的代码都在activity或者fragment中,导致界面工作效率过低,代码过于混乱。
【这里有个不大不小的坑,注意图片中红色部分,留着到后面再讲QAQ】

基于这样的情况,项目组经过商议后决定要重构项目,其中就包括网络请求框架。要求在不改变以前程序代码的基础下进行代码重构。所以经过慎重考虑后,决定将retrofit2集成进我们的项目中去。

二、retrofit集成

1、首先导入retrofit2的相关依赖:

    //retrofit网络框架
    compile 'com.squareup.retrofit2:retrofit:2.3.0'          //retrofit2.3.0类库
    compile'com.squareup.retrofit2:converter-scalars:2.3.0'  //关于字符串的转换器
    compile 'com.squareup.retrofit2:converter-gson:2.3.0'    //关于gson的转换器
    compile 'com.squareup.okhttp3:logging-interceptor:3.4.1' //okhttpClient的log拦截器

2、http请求:
依赖包导入成功后就可以放肆的利用retrofit2进行实验了,首先用一个简单的http请求测试一下是否能走通。

    public interface PostApi {
    /**
     * 上传错误信息接口
     * */
    @POST("api/OPERATION_ERROR_STATISTICS")
    Call<ResponseBody> postError(@Body ErrorBean bean);
    }

以上是一个简单的post请求接口。
【实体类就不贴了,自定义任何一个实体类都可以】
然后是请求的方法及回调:

 public void errorPost(List<CrashBean> list){

        //创建retrofit
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(ActionNet.BASE_URL)
                .client(getOkHttpClient())
                .addConverterFactory(GsonConverterFactory.create()) 
                .build();

     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值