retrofit 使用介绍(快速了解和集成retrofit)

一、简介

不废话!这里是retrofitGithub地址   这里是retrofit的官方文档  。单独学会使用retrofit  只需要进入github地址将最新的依赖包导入就可以使用  这里最新的是  jar包版本是 compile 'com.squareup.retrofit2:retrofit:2.2.0'  导入项目即可使用(retrfit包中已经自带了okhttp3的东西)。  然后只需要  定义跟地址  编写请求的接口  进行调用  三个步骤就可以使用retrofit了。

代码如下:

1.0 定义请求跟地址

public class Constant {

    public static String BaseURL = "http://litchiapi.jstv.com/";

}

2.0 定义请求接口(接口名字自己随意)

public interface Netinterface {
    
    @GET("api/GetFeeds?column=0&PageSize=20&pageIndex=1&val=100511D3BE5301280E0992C73A9DEC41")
    Call<LizhiNews> test01();
}
3.0  进行调用就可以实现请求了

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_retrfit);
        
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(Constant.BaseURL)
                .build();
        Netinterface netinterface = retrofit.create(Netinterface.class);
        netinterface.test01().enqueue(new Callback<LizhiNews>() {
            @Override
            public void onResponse(Call<LizhiNews> call, Response<LizhiNews> response) {
                LizhiNews body = response.body();
                Log.e(TAG, body.toString());
            }
            @Override
            public void onFailure(Call<LizhiNews> call, Throwable t) {
            }
        });

    }

以上三步就可以实现retrofit的一个基本配置使用了。当然retrfit的使用绝对不仅仅局限于此  

二、配合Gson 、rxjava等使用

 为了配合Gson快速解析为java对象    要使用Gson进行解析  那就必须要导入Gson的依赖  studio里面自带有  就不在赘述了。 这里要说的是retrfit为了能够使用Gson解析还要添加一个Converters(转换器的依赖 、使用rxjava也是导入rxjava的依赖包  还要导入rxjava的转换器的依赖包)  最新的gson和rxjava等的converter是的包可以从Github项目中的一个叫做retrofit-converters中查找到  导入就可以就行使用了 。

  

然后剩下的就是根据项目需要去进行各种get post put 等等请求(建议不需要去过于苛刻的去记这些注解等等 只需要使用的时候查看文档就行)

这里借用一下 这是博主的原地址 这篇博客的案例(因为其确实讲解的很清晰)

  /** 
     * 通过@GET注解标记位get请求  @GET中填写baseUrl根路径后的路径 
     * 访问的网络地址由根路径和@GET注解后的路径连接组成 
     */  
  
//案例一:这种是将根路径后面的路径整个放入了get中进行拼接,相对比较简单,后期和根url拼接  
    @GET("api/GetFeeds?column=0&PageSize=20&pageIndex=1&val=100511D3BE5301280E0992C73A9DEC41")  
//此处的返回值可以自行设置,这里我就简单的让他返回请求体的内容:  
    Call<ResponseBody> getResonseBody();  
  
    @GET("api/GetFeeds?column=0&PageSize=20&pageIndex=1&val=100511D3BE5301280E0992C73A9DEC41")  
//案例二:此处的返回值我让他返回的是String类型,具体返回逻辑我一会儿在主方法中创建:  
 Call<String> getJsonString();  
  
//案例三:使用的是茶叶品牌的url,此处将根目录以后的部分进行了截取,但是返回的是一个Tea对象的集合,至于tea对象的生成大家一定都会使用Gson吧,这个我就不细说了。  
    @GET("category?app_id=161")  
    Call<List<Tea>> getTeas();  
  
//案例四:此处使用的是同案例一,但是path路径不确定的情况情况下,使用{type}代替,当做抽象方法中的一个参数进行接收,  
    @GET("api/{type}?column=0&PageSize=20&pageIndex=1&val=100511D3BE5301280E0992C73A9DEC41")  
//这里的path就是你要传入的type类型,这里@path“tyle”名称一定要和@get();中的type同名,  
    Call<NewsInfo> getNewsInfo(@Path("type") String type);//String type="GetFeeds"  
  
//案例五:有一个键值对的情况,如果不确定时,需要使用此方法,使用@query(键名)将你的值输入:  
    @GET("category")//category?app_id=161  
    Call<List<Tea>> getTeaByNetWork(@Query("app_id") int id);  
  
//案例六:如果键值对是很多的情况下,案例五很明先无法满足需要,这时候需要使用@querymap接收一个map集合来进行拼凑。  
    @GET("api/GetFeeds")  
    Call<NewsInfo> getInfoByNetWork(@QueryMap Map<String, String> map);  
  
//你也可以使用多种方式拼凑结合:使用{},加上参数的拼接等,都是可以灵活运行  
案例七:  
//    @GET("api/{type}")  
//    Call<NewsInfo> getInfo(@Path("type") String type,@QueryMap Map<String,String> map);  
  
     //案例八:网络下载图片,  
    @GET("img")  
     Call<ResponseBody> downLoadImage();  
  
    //post形式提交表单数据  登录 注册,post需要服务器,这里无法进行演示,但是代码有,需要的话可以从自己的服务器中进行验证,  
    //@post注解说明采用post提交的形式 @Field("向服务器提交的key")  
    @POST("LoginServlet")  
    @FormUrlEncoded  
    Call<String> login(@Field("username") String userName,  
                       @Field("password") String password);  
  
  
    //上传单个文件 @Field和@Part 客户端向服务端携带参数发起请求  
    //@Part 可携带的参数类型更多样 数据流等  
    @Multipart  
    @POST("UpLoadAction")  
    Call<ResponseBody> upLoadFile(@Part("img") RequestBody body);  
  
  
    //可以上传表单中所有的数据  表单文本+附件  
    @POST("UpLoadAction")  
    Call<ResponseBody> upLoad(@Body() MultipartBody body);  


compile 'com.squareup.okhttp3:logging-interceptor:3.1.2'

最后附上 几篇可供参考的retrofit的使用的文章

文章01  文章02 文章03  文章04


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值