Retrofit的使用

本文介绍了Retrofit的基本概念及其在Android和Java中的使用方法。Retrofit是一个类型安全的HTTP客户端,通过对OkHttp的封装简化了RESTful API的调用过程。文章通过一个具体的示例详细展示了如何使用Retrofit进行网络请求。

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

Retrofit介绍

Retrofit是由Square公司出品的针对于Android和Java的类型安全的Http客户端,
如果看源码会发现其实质上就是对okHttp的封装,使用面向接口的方式进行网络请求,利用动态生成的代理类封装了网络接口请求的底层,
其将请求返回javaBean,对网络认证 REST API进行了很好对支持此,使用Retrofit将会极大的提高我们应用的网络体验。

Retrofit入门



public class Example01 {
    public interface BlogService {
        @GET("blog/{id}")
            //这里的{id} 表示是一个变量//获取指定ID的Blog
        Call<ResponseBody> getBlog(/** 这里的id表示的是上面的{id} */@Path("id") int id);
    }

    public static void main(String[] args) throws IOException {
        //创建Retrofit实例
//        创建Retrofit实例时需要通过Retrofit.Builder,并调用baseUrl方法设置URL。
//        注: Retrofit2 的baseUlr 必须以 /(斜线) 结束,
//        不然会抛出一个IllegalArgumentException,
//                所以如果你看到别的教程没有以 / 结束,
//        那么多半是直接从Retrofit 1.X 照搬过来的。
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("http://localhost:4567/")
                .build();
//注意,这里是interface不是class,所以我们是无法直接调用该方法,
// 我们需要用Retrofit创建一个BlogService的代理对象。
        BlogService service = retrofit.create(BlogService.class);
//       拿到代理对象之后,就可以调用该方法啦。
        Call<ResponseBody> call = service.getBlog(2);
        // 用法和OkHttp的call如出一辙
        // 不同的是如果是Android系统回调方法执行在主线程
        call.enqueue(new Callback<ResponseBody>() {
            @Override
            public void onResponse(
                    Call<ResponseBody> call, Response<ResponseBody> response) {
                try {
                    System.out.println(response.body().string());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

            @Override
            public void onFailure(Call<ResponseBody> call, Throwable t) {
                t.printStackTrace();
            }
        });
    }

1.1、创建Retrofit实例

Retrofit retrofit = new Retrofit.Builder()
.baseUrl(“http://localhost:4567/“)
.build();

1.2、接口定义

以获取指定id的Blog为例:

public interface BlogService {
@GET(“blog/{id}”)
Call getBlog(@Path(“id”) int id);
}

1.3、接口调用

Call call = service.getBlog(2);
// 用法和OkHttp的call如出一辙,
// 不同的是如果是Android系统回调方法执行在主线程
call.enqueue(new Callback() {
@Override
public void onResponse(Call call, Response response) {
try {
System.out.println(response.body().string());
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void onFailure(Call call, Throwable t) {
t.printStackTrace();
}
});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值