Retrofit学习总结

来源:互联网 发布:手机淘宝内部优惠券 编辑:程序博客网 时间:2024/06/05 20:41

Retrofit2.0学习总结

学习背景:

     今天和一个后台的同事聊天,说你们现在后台开发什么框架最流行,同事说.当然是REST了,和app对接开发

REST既方便又快捷.正好我要和他对接支付方面,所以干脆紧跟时代的潮流,学习一下这个github现在最高的

框架.


     什么是REST?(此段是百度粘贴的,感谢度娘.)

     REST(REpresentational State Transfer)是一组架构约束条件和原则。 

RESTful架构都满足以下规则: 
(1)每一个URI代表一种资源; 
(2)客户端和服务器之间,传递这种资源的某种表现层; 
(3)客户端通过四个HTTP动词,对服务器端资源进行操作,实现”表现层状态转化”。

关于更多REST知识点

运行结果为:

OKHTTP简易封装.

client = new OkHttpClient.Builder()        .addInterceptor(new HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY))//注册一个本地应用拦截器,这里有好几个状态. BASIC / HEADERS / BODY 公共参数,头信息,日志拦截        .retryOnConnectionFailure(true)//是否自动重连        .connectTimeout(15, TimeUnit.SECONDS)//设置连接超时        .readTimeout(10,TimeUnit.SECONDS)//设置读超时        .writeTimeout(10,TimeUnit.SECONDS)//设置写超时        .addNetworkInterceptor(new LoggingInterceptor())//注册一个网络拦截器        .build();//构建okhttp
Retrofit简单封装
gson = new GsonBuilder()        //配置你的Gson        .setDateFormat("yyyy-MM-dd hh:mm:ss")        .create();retrofit = new Retrofit.Builder()        .client(OkHttpUtil.getInatance().getOkHttpClient())//设置okhttp        .addCallAdapterFactory(RxJavaCallAdapterFactory.create())//提供RxJava支持,如果没有提供响应的支持(RxJava,Call),则会跑出异常。        .addConverterFactory(GsonConverterFactory.create(gson))//因为这里和后台是通过json交互,所以需要创建一个GsonConverterFactory,可以添加多种序列化Factory        .baseUrl(BASE_URL)        .build();
//这里在初始化的时候就创建了一个RetroFit的对象.我们可以用这个对象来拼接参数进行post和get请求啦
APIInterface 接口
public interface APIInterface {    /**     * 获取节目单 这里一定要注意上面注解中的参数名称和下面path中的参数一定要一模一样.大家还是copy吧.这里坑死我了,一直报正则表达式异常
     * @param al_id     * @param hid     * @param uid     * @return     */    @POST("/program/{al_id}/{hid}/{uid}")    Call<ProgramInfo> getProgramInfo(@Path("al_id") String al_id, @Path("hid") String hid, @Path("uid") String uid);    /**     * 获取升级     * @param channel_id     * @param app_id     * @param app_version     * @param mac     * @return     */    @GET("/upgrade/{channel_id}/{app_id}/{app_version}/{mac}")    Call<Update> getUpdate(@Path("channel_id") String channel_id, @Path("app_id") String app_id, @Path("app_version") String app_version, @Path("mac") String mac);}
使用方式:
 RetrofitUtil.getInatance().getProgramInfo("9", "4", "1", new Callback() {            @Override            public void onResponse(Call call, Response response) {                Log.d("lichao","success....." + response.body().toString());            }            @Override            public void onFailure(Call call, Throwable t) {                Log.d("lichao","fail....." +t.getMessage()                 textView.setText(t.getMessage());            }        });
这里会直接调用
重要知识点:
retrofit:注解
      其他注解,@Path、@Header,@Headers、@Url

方法注解,包含@GET、@POST、@PUT、@DELETE、@PATH、@HEAD、@OPTIONS、@HTTP。 
标记注解,包含@FormUrlEncoded、@Multipart、@Streaming。 
参数注解,包含@Query,@QueryMap、@Body、@Field,@FieldMap、@Part,@PartMap

@HTTP:可以替代其他方法的任意一种
@Url:使用全路径复写baseUrl,适用于非统一baseUrl的场景。
先写到这里.如果想要了解自定义Converter,请看下一篇文章.
github地址:https://github.com/LoveCandy1314/RetrofitDemo
这次要感谢一下文章支持:
http://blog.csdn.net/wbwjx/article/details/51379506
http://www.jianshu.com/p/2710ed1e6b48

原创粉丝点击