Retrofit使用一:超简单先用上

Retrofit超基础使用示例


刚刚开始尝试使用Retrofit2的时候,由于第一次使用这种带注解,果断看着蒙蔽啊。不懂套路,完全无从下手啊,所以我决定记录一下最基础简单的一些规则。

编程的任何新技术,我都主张先用上,再学习。

 

流程上来说,步骤是这样的:

⑴定义一个接口;

⑵创建一个Retrofit对象,创建API的实例;

⑶通过实例获取Call对象进行处理;

 

先说第一步:

@GET@Path@Query这三个说起,其他的就先不说了,等用了这三个几次之后再看文档,就能很快速的明白了。我是为了演示,写在了一起,实际应用请各自独立。

package com.shareye.newsmanager.model.http;

import retrofit2.Call;
import retrofit2.http.GET;
import retrofit2.http.Path;
import retrofit2.http.Query;

/**
 * Created by Shareye on 2016/4/14.
 */
public interface GoogleApi {
    /**
     * 1.一会儿我们将声明基本URL为"https://www.google.com/"
     * 2.目标地址"https://www.google.com/doodles/"
     * @Get 首相说明是get方法,然后括号中的参数将作为基本参数后面的拼接字符串,如果没有需要拼接的,可以为"",也可以直接写完整地址
     *"doodles/"将会金额基本地址拼接,得到完整目标地址
     * @return Call<String>类型的数据
     */
    @GET("doodles/")
    Call<String> getString();

    /**
     * 1.一会儿我们将声明基本URL为"https://www.google.com/"
     * 2.目标地址"https://www.google.com/doodles/120th-anniversary-of-first-modern-olympic-games"
     * @Get 上面说过,这里{}的语法是将进行替换,@Path标示后面的参数将会替换在那个位置。{}允许有多个,相应的参数就要多个且一一对应
     *word1将会填充到{word1},然后与基本地址拼接,得到完整目标地址
     * @return Call<String>类型的数据
     */
    @GET("{word1}/120th-anniversary-of-first-modern-olympic-games")
    Call<Integer> getInt(@Path("word1") String word1);


    /**
     * 1.一会儿我们将声明基本URL为"https://www.google.com/"
     * 2.目标地址"https://www.google.com/doodles/?q=春节"
     * @Query  标示后面的值会与其括号的参数进行拼接(?q=keyword)后,再拼接前面的整体参数。
     * keyword 查询的关键字,
     * @return Call<String>类型的数据
     */
    @GET("doodles/")
    Call<String> getSpringFestival(@Query("q")String keyword);
    //将上面的"doodles/"作为输入参数
    @GET("{word1}/")
    Call<String> getSpringFestival(@Path("word1")String word1,@Query("q")String keyword);
    //更直接点
    @GET("doodles/?q=春节")
    Call<String> getSpringFestival();


}

接下来是第二步:

先就基础的几个配置设置一下,其他的后续拓展。

Retrofit retrofit = new Retrofit.Builder()
        .baseUrl("http://www.google.com/")//配置基础URL
        //.client(xxx)//可以不设置,默认是OkHttpClient
        .addConverterFactory(GsonConverterFactory.create())//使用Gson解析数据
        //.addCallAdapterFactory(rxFactory)//RxJava的,初期依旧不用理会
        .build();
GoogleApi api = retrofit.create(GoogleApi.class);

第三步:通过获取的api实例来调用,这里选择了异步的调用方法,返回值在response中实际包含。

api.getString().enqueue(new Callback<String>() {
    @Override
    public void onResponse(Call<String> call, Response<String> response) {
	//这里是对成功返回做操作
    }

    @Override
    public void onFailure(Call<String> call, Throwable t) {
	//请求失败的操作处理
    }
});




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

公贵买其鹿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值