Retrofit

本文介绍如何使用Retrofit发起GET请求,包括定义业务接口、创建Retrofit实例、配置转换器及执行同步或异步请求的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Retrofit

首先先来看一个完整Get请求是如何实现:

  1. 创建业务请求接口,具体代码如下:

    public interface BlueService {
       @GET("book/search")
       Call<BookSearchResponse> getSearchBooks(@Query("q") String name, 
            @Query("tag") String tag, @Query("start") int start, 
            @Query("count") int count);
    }
       
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    这里需要稍作说明,@GET注解就表示get请求,@Query表示请求参数,将会以key=value的方式拼接在url后面

  2. 需要创建一个Retrofit的示例,并完成相应的配置

    Retrofit retrofit = new Retrofit.Builder()
       .baseUrl("https://api.douban.com/v2/")
       .addConverterFactory(GsonConverterFactory.create())
       .build();
    
    BlueService service = retrofit.create(BlueService.class);
       
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    这里的baseUrl就是网络请求URL相对固定的地址,一般包括请求协议(如Http)、域名或IP地址、端口号等,当然还会有很多其他的配置,下文会详细介绍。还有addConverterFactory方法表示需要用什么转换器来解析返回值,GsonConverterFactory.create()表示调用Gson库来解析json返回值,具体的下文还会做详细介绍。

  3. 调用请求方法,并得到Call实例

    Call<BookSearchResponse> call = mBlueService.getSearchBooks("小王子", "", 0, 3);
       
    • 1
    • 1

    Call其实在Retrofit中就是行使网络请求并处理返回值的类,调用的时候会把需要拼接的参数传递进去,此处最后得到的url完整地址为

    https://api.douban.com/v2/book/search?q=%E5%B0%8F%E7%8E%8B%E5%AD%90&tag=&start=0&count=3

  4. 使用Call实例完成同步或异步请求

    • 同步请求

      BookSearchResponse response = call.execute().body();
           
      • 1
      • 1

      这里需要注意的是网络请求一定要在子线程中完成,不能直接在UI线程执行,不然会crash

    • 异步请求

      call.enqueue(new Callback<BookSearchResponse>() {
      @Override
      public void onResponse(Call<BookSearchResponse> call,        Response<BookSearchResponse> response) {
      asyncText.setText("异步请求结果: " + response.body().books.get(0).altTitle);
      }
      @Override
      public void onFailure(Call<BookSearchResponse> call, Throwable t) {
      
      }
      });
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值