RxJava + Retrofit 总结汇总

Retrofit官网(出自Square公司)

Retrofit与okhttp共同出自于Square公司,retrofit就是对okhttp做了一层封装。把网络请求都交给给了Okhttp,我们只需要通过简单的配置就能使用retrofit来进行网络请求了,其主要作者是Android大神JakeWharton。


@FormUrlEncoded  --->  这个是和@Field一起使用的;
@POST("good/recommendgood")
Observable<String> makeMoneyGoodsRecommend(@Header("token") String token, @Field("size") String size);


查询参数也可以添加。@Query是在get请求url出现?时出现查询的;

@GET("group/{id}/users")
Call<List<User>> groupList(@Path("id") int groupId, @Query("sort") String sort);


Retrofit的底层也是由 OkHttp 网络加载库来支持的。

关于 Retrofit 的原理,有三个十分重要的概念:『注解』,『动态代理』,『反射』。将会在以后逐步进行分析。


Java 注解 基础知识点
定义:注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。
作用分类:
①编写文档:通过代码里标识的元数据生成文档【生成文档doc文档】
②代码分析:通过代码里标识的元数据对代码进行分析【使用反射】
③编译检查:通过代码里标识的元数据让编译器能够实现基本的编译检查【Override】


{user} 类似于占位符的作用,具体类型由 repo(@Path("user") String user) 指定,这里表示 {user} 将是一段字符串。

Retrofit 中,有许多的注解:

其中,包含了与请求方法相关的 @GET、@POST、@HEAD、@PUT、@DELETA、@PATCH,和参数相关的@Path、@Field、@Multipart等。


Header 设置

第一种是静态配置,直接在接口中指定 Header 参数:

第二种是动态配置:
@GET("/user")
Call<TestModel> getUser(@Header("Authorization") String authorization)


GET 请求参数设置和POST 请求参数设置是不一样的;



踩过的坑

Retrofit踩坑之Delete请求

http://blog.csdn.net/u014752325/article/details/59589437

@DELETE("bean/delete")  
Observable<CommonBean> deleteBean(@Body DeleteUserBody body);  

那就根据这个改一下呗

@HTTP(method = "DELETE", path = "location/delete", hasBody = true)  


正解:

    // 删除收货地址 —————— 迷之错误、   addressid 与 id 有什么分别吗?
    @DELETE("address/delete/{addressid}")
    Observable<String> deleteAddressData(@Header("token") String token, @Path("addressid") String addred);


    // 异常状态信息的处理、

                            public void onError(Throwable e) {
                                   LogUtils.e("mxg", "requestVerificationCodeForLogin ==onError== " + e.getMessage());
                                   // TODO  异常的处理、
                                   if (e instanceof HttpException) {
                                       HttpException httpException = (HttpException) e;
                                       try {
                                           String responseString = httpException.response().errorBody().string();
                                           JSONObject jsonObject = new JSONObject(responseString);
                                           String msg = jsonObject.getString("msg");
                                           LogUtils.e("mxg", "responseString = " + responseString + ",msg = " + msg);
                                           ToastUtil.showToast(context, msg);
                                       } catch (Exception e1) {
                                           e1.printStackTrace();
                                       }
                                   }
                               }




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值