Android Retrofit2+okhttp3详细配置,解决URL乱码的问题。

来源:互联网 发布:arm服务器 知乎 编辑:程序博客网 时间:2024/05/21 21:37

前言:

        一些基本的配置和基础的讲解。会用的都可以绕过,只是简单的入门和配置。首先我们要使用肯定得导入包。导入如下包:

compile’com.squareup.retrofit2:retrofit:2.2.0’


        其实导入这一个就可以了。因为okhttp在retrofit和okio都已经依赖了。

什么gson的解析啊rxjava啊我们不使用都不需要导入,但是如果接口是返回的标准的json的话还是很建议导入自动json解析库的,非常方便,不用去管解析了,直接可以拿bean使用。Rxjava其实随意,反正不要盲目。不要为了使用而使用,还是根据实际的开发。


使用:

步骤1:导入retrofit

这个很简单就不多加描述了。


步骤2:写ApiServer

这个就是编写一个ApiServer类。然后里面怎么写,最好还是依据项目的进展程度,和实际的需求,我们可以这样写。

做法一:


如果使用rxjava+gson解析的话是这样写的。


就这样我们可以将我们的全部的接口申明在这里,等下直接调用就可以了。这样非常的清晰,接口名字,url,参数,都很方便浏览,增加接口的时候再这里写一个就可以了。


重要说明:如果不使用Rxjava服务器会返回我们想要的数据放在Call<T>这个T。如果使用了Rxjava就是上面的第二张图片了,在Observable<T>里面。这个和我们之前说的是否需要导入gson等解析是相互呼应的。我们什么都不导入的情况下直接设置Call<ResponseBody>就可以了。这样服务器返回的数据就会在ResponseBody里面了。可以通过ResponseBody直接获取到接收的二进制流,也可以直接获取到服务器返回的String等。然后我们自己做解析。如果服务器返回的是标准的json格式,我们就可以不用自己写解析了。


导入

compile’com.google.code.gson:gson:2.7’

compile’com.squareup.retrofit2:converter-gson:2.0.2’

我相信大部分朋友公司应该都已经是标准的resful了。但是有的返回的是加密的字符串接流。就得用responseBody接受然后自己解密做处理了。


重要说明:有时候我们设置url还有参数的时候有时候里面会有特殊字符。这里的处理是添加encoded = true默认是url编码。这样就不会对特殊字符进行转义了。中文也不要怕。服务器能直接获取,我写了个接口试了。确实能获取到中文。还有区分好@Url 和@Path的区别。每个注解都可以点进去然后里面可以设置一些什么。


做法二:

如果接口数量过多,我们为了更加清晰化,可以把这个ApiServer拆分。分成,OrderAPiServer,UserApiServer,ProductApiServer,等等自己可以按照模块拆分,这样的话我们就细分了一下,请求就更加清晰了。这个就不用放图片了。


做法三:

编写一个BaseApiServer然后在里面只放几个公共的方法。


我们可以根据不同的url就区分了不同的接口,咱们在乎的是返回数据。根据自己的需求编写BaseApiServer。

在这个上面还封装一层IRequestApi(接口)里面也是这些方法。然后一个类实现这个接口,这样做也是可以实现底层框架切换的功能。这个可以看我之前的公众号的文章,上面有。


这三种没有什么做法好什么做法差,就像说volley和okhttp那个更加好一样,没有比较的意义。我们选合适的就好。


步骤3:将retrofit稍微的封装。

        我们为了在使用的时候防止Activity里面代码过于臃肿,可以将配置okhttp和Retrofit的代码自己编写一个RetrofitClient,然后在需要调取数据的地方直接传部分参数然后直接使用就好了。如果是使用mvp的话我们可以直接在model里面调取然后将数据获取存储并回传给p然后回传给v就可以了。

对于配置还是说的那个怎么看着方便怎么来。但是不是说的胡乱瞎搞。


    1。codeStyle得是符合的,这个和业务基本上无关

    2。尽量做到易扩充和易维护,易懂。


反正就是在满足一些基本的规则的前提下怎么方便怎么来。

我们就这样写。


这里我要说的是我们可以直接讲声明okhttpclient成员变量和retrofit成员变量,然后在构造方法里面配置都可以。有其他需求需要修改baseUrl的我们反正就都可以在这个里面写。怎么用着方便怎么写。这里远远不止设置这些东西。还有拦截器,缓存策略等很多东西。这里先做简单的配置吧。主要是全部放上来篇幅过大,然后就拆分了。下篇会写。


步骤4:使用。

这里就是使用了很简单和方便了。

通过这个就可以拿个服务器传给我们的数据了。这里回调返回的反正是Call<T>里面的T传什么返回什么。这里只说了get下面很多篇给大家说拦截器,缓冲策略,post,还有文件的上传和下载自定义converter。由于篇幅过大只能一部分一部分分开写了。

另外公众号求粉一波关注一波,关注原创,有什么问题留言。第一时间给大家解决。



0 0
原创粉丝点击