Retrofit的简单使用方法

节前(国庆七天乐),编程用了一下Retrofit写网络请求,然后做个总结,免得忘了。

先简单聊下Retrofit,Retrofit和OkHttp一样都是最小的世界500强公司——Squareup公司(一家国外的移动支付公司)的作品。这个开源框架的工程名字叫做Square Open Source。顺便说一下这个的作者:大名鼎鼎的JackWarton!!!

废话少说,直入主题。

一、准备工作:
1.网络权限

<uses-permission android:name="android.permission.INTERNET" />

2.框架包的引用

compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'

二、预备知识:
Retrofit是一种使用注解来发起网络请求的。(有点类似与初始化各种View、监听View的动作的黄油刀ButterKnife)
根据常用的请求类型,分为这样几种注解:
@GET get请求
@POST post请求
@PUT put请求
@PATCH patch请求(用来更新局部资源)
@HEAD 请求头
@OPTIONS 请求选项
@DELETE 删除请求
@Query 查询
@HTTP 包括method、path、hasBody

优点:使用注解可以大大简化请求的步骤和代码。
缺点:没有取消真在进行中的请求的方法。如果需要取消必须手动杀死,并且不好实现。
请求方法:必须指定请求方式和相对应的URL

三、使用的简单例子:
以一个简单的GET请求为例

// 首先将URL处理一下,将URL分为域名基本部分和相对部分。
// BASE_URL是基本部分
String BASE_URL = "http://www.example.com";
// 相对部分写在注解中
@GET("/part/index.php/...") ;

1.第一步:Retrofit初始化

Retrofit retrofit = new Retrofit.Builder()
                    .baseUrl(BASE_URL)
                    .addConverterFactory(GsonConverterFactory.create())
                    .build();

其中,addConverterFactory方法的调用目的是关联Gson,以便于将获得得JSON字符串将转化成Java对象。

2.第二步,需要创建一个规定格式的接口

interface HTTPService {
    String BASE_URL = "http://www.example.com";
    @GET("/part/index.php/...")
    // 其中这个接口中编写一个get方法可以将获得得JSON字符串转换成Gson对象
    Call getJavaBean();
}

3.第三步,初始化HTTPService、并且调用回调方法。

HTTPService service = retrofit.create(HTTPService.class);
Call mCall = service.getJavaBean();
mCall.enqueue(new Callback(){
    @Override
    public void onResponse(Call call, Response response) {
        response.body();
        // TODO
    }

    @Override
    public void onFailure(Call call, throwable t) {
        // TODO
    }
});

值得注意的是,此使用的是异步GET请求,请求发起是在一个内置的工作线程中,回调返回请求结果是在主线程中。总而言之就是你不用管线程的事。线程都封装好了。

——————————————不怎么华丽的分割线———————————————–

你可能感兴趣的:(Android)