初识Okhttp和Retrofit

1 篇文章 0 订阅
1 篇文章 0 订阅

Okhttp和Retrofit的出现已经有很长一段时间了,一直都没有去了解过它们,现在正好有一个机会去了解和使用,下面是我对初学Okhttp和Retrofit的一些简要笔记。

一、OKhttp

OKhttp一个处理网络请求的第三方库,是安卓端最火热的轻量级框架,由移动支付Square公司贡献(该公司还贡献了Picasso)

用于替代HttpUrlConnection和Apache HttpClient(android API23 6.0里已移除HttpClient,现在已经打不出来)。

因为我是用Android studio开发,使用前添加依赖:


注:okhttp内部依赖okio,所以要同时导入okio。

1、get 请求


上面就是get请求方式:

(1)先创建OkHttpClient对象,再构造一个Request对象,参数一定要有url,也可以通过Request.Builder设置更多的参数。

(2)构造一个call对象,然后通过okHttpClient发起请求。

(3)请求在回调Callback中获取结果并处理数据。

2、post 请求


post 请求和get 请求其实差不多,只是post中的RequestBody参数是必须的。

3、文件上传


关于OKhttp的知识还有很多,比如get post 的同步异步、带参请求,带参数的文件上传,文件下载等等,今天先简单说到这。接下来说说Retrofit。

二、Retrofit

Retrofit也是Square公司开发的一款针对Android网络请求的框架,其实质就是对okHttp的封装,使用面向接口的方式进行网络请求,利用动态生成的代理类封装了网络接口。

添加依赖:


用法:

先创建一个User类存放实体数据


定义接口,在retrofit中通过一个Java接口作为http请求的api接口


创建retrofit实例


调用接口,并发送请求


以上就是retrofit的简单用法。

OKhttp与Retrofit的联系:Retrofit是基于okhttp的封装,使得使用上更加简洁明了,并且配置灵活,能达到解耦的效果,更加方便利用okhttp的使用。

简书链接:https://www.jianshu.com/p/bf310b9cf558

Android中的网络通信可以通过OkHttpRetrofit来实现。 首先,在你的项目中需要引入OkHttpRetrofit的依赖。你可以在build.gradle文件中添加以下代码来引入依赖: ``` implementation 'com.squareup.okhttp3:okhttp:4.9.0' implementation 'com.squareup.retrofit2:retrofit:2.9.0' ``` 接下来,你需要创建一个OkHttpClient的实例,它将负责处理网络请求。你可以使用OkHttpClient的Builder来配置一些网络请求的参数,比如超时时间、拦截器等。例如: ``` OkHttpClient client = new OkHttpClient.Builder() .connectTimeout(10, TimeUnit.SECONDS) .readTimeout(10, TimeUnit.SECONDS) .build(); ``` 然后,你需要创建一个Retrofit的实例。Retrofit是一个类型安全的HTTP客户端,它可以根据你定义的接口自动生成网络请求的代码。你可以使用Retrofit的Builder来配置一些参数,比如base URL、转换器、适配器等。例如: ``` Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://api.example.com/") .client(client) .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJava3CallAdapterFactory.create()) .build(); ``` 在这里,我们设置了一个base URL为"https://api.example.com/",使用了GsonConverterFactory来将JSON数据转换为对象,使用了RxJava3CallAdapterFactory来支持RxJava的Observable。 接下来,你需要定义一个接口,用于描述你的网络请求。你可以在接口中定义各种网络请求的方法,并使用注解来指定请求的URL、请求方法、请求参数等。例如: ``` public interface ApiService { @GET("users/{username}") Call<User> getUser(@Path("username") String username); } ``` 然后,你可以使用刚才创建的Retrofit实例来创建一个ApiService的实例,并调用接口中的方法来发起网络请求。例如: ``` ApiService apiService = retrofit.create(ApiService.class); Call<User> call = apiService.getUser("john"); call.enqueue(new Callback<User>() { @Override public void onResponse(Call<User> call, Response<User> response) { if (response.isSuccessful()) { User user = response.body(); // 处理返回的用户数据 } else { // 处理请求失败的情况 } } @Override public void onFailure(Call<User> call, Throwable t) { // 处理请求失败的情况 } }); ``` 以上就是使用OkHttpRetrofit进行网络通信的基本步骤。你可以根据自己的需求来定义更多的网络请求方法,并处理返回的数据或错误。需要注意的是,为了保证网络请求的安全性,你可能还需要在AndroidManifest.xml文件中添加网络权限。例如: ``` <uses-permission android:name="android.permission.INTERNET" /> ``` 希望以上信息对你有所帮助!如果还有其他问题,请随时提问。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值