08-16 初识Retrofit(一)

作者: 喜欢萌妹子的少年 | 来源:发表于2018-08-16 18:21 被阅读6次

Retrofit 简单来说就是一个封装了Okhttp 的网络请求框架.(反正我是这么理解的,不对的请斧正)

优点:(摘抄:https://blog.csdn.net/carson_ho/article/details/73732076)

@ 功能强大 支持同步/异步 支持多种数据解析 支持Rxjava
@ 简介易用 通过注解配置参数,采用大量设计模式优化
@ 可扩展性好

理论啥的先不管,先能使用再说吧

(听说当年郭靖也是先记住了再慢慢消化的)

简单使用:

添加依赖

dependencies {
    // Okhttp库
    compile 'com.squareup.okhttp3:okhttp:版本号(3.1.2)'
    // Retrofit库
    compile 'com.squareup.retrofit2:retrofit:版本号(2.0.2)'
}

添加权限

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

接收服务器返回实体类

data class BaseResponse<T>(val code :Int, val msg:String, val data:T)

创建接口Api 类(人喜好 有的喜欢放一个类,本人喜欢更具模块去分对应的API)

interface ApiService {

    @GET("v2/feed?")
    fun getFirstHomeData(@Query("num") num:Int): Observable<HomeBean>

}

创建Retrofit 对象

// 获取retrofit的实例
retrofit = Retrofit.Builder()
 /**自己配置 阿里巴巴编码插件会告诉你 不要在单行后边加注视 **/
               .baseUrl(BASE_URL)  
               .client(client!!)
               .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
               .addConverterFactory(GsonConverterFactory.create())
               .build()

使用大致:

(Activity 部分代码)
 mPresenter.requestHomeData(num)

(Presenter 部分代码)
 override fun requestRankList(apiUrl: String) {
        checkViewAttached()
        mRootView?.showLoading()
        val disposable = rankModel.requestRankList(apiUrl)
                .subscribe({ issue ->
                    mRootView?.apply {
                        dismissLoading()
                        setRankList(issue.itemList)
                    }
                }, { throwable ->
                    mRootView?.apply {
                        //处理异常
                        showError(ExceptionHandle.handleException(throwable),ExceptionHandle.errorCode)
                    }
                })
        addSubscription(disposable)
    }
 
(Model 部分代码)
fun requestRankList(apiUrl:String): Observable<HomeBean.Issue> {

        return RetrofitManager.service.getIssueData(apiUrl)
                .compose(SchedulerUtils.ioToMain())
    }

  

详细见DEMO 使用 (项目中 为MVP 模式 Kotlin + Retrofit + RxJava)

详解:

网络请求方法:

@GET   @POST    @PUT   @DELETE   @PATH    @HEAD @OPTIONS  @HTTP

其中@GET  @POST @HEAD @DELETE @PUT   对应HTTP的网络请求方式

另外 此处URL做一特殊说明:
Retrofit 把URL分为2部分
1. 在创建Retrofit 实体时候 通过baseUrl()方法设置 
2. 在API中通过注解设置 即:@GET() 等设置的
完整URL = BASE_URL+ 相对路径

// 以上的效果是一致的。
// 区别在于使用场景和使用方式
// 1. 使用场景:@Header用于添加不固定的请求头,@Headers用于添加固定的请求头
// 2. 使用方式:@Header作用于方法的参数;@Headers作用于方法

@Header & @Headers

// @ Header
@GET("user")
Call<User> getUser(@Header("Authorization") String authorization)

// @Headers
@Headers("Authorization: authorization")
@GET("user")
Call<User> getUser()
@Body
作用: 以POST方式 传递自定义数据类型 给服务器
特别注意:如果提交的是一个Map,那么作用相当于 @Field
@Query和@QueryMap

作用:用于 @GET 方法的查询参数(Query = Url 中 ‘?’ 后面的 key-value)

@Url
作用:直接传入一个请求的 URL变量 用于URL设置
// 当有URL注解时,@GET传入的URL就可以省略
// 当GET、POST...HTTP等方法中没有设置Url时,则必须使用 {@link Url}提供

相关文章

  • 08-16 初识Retrofit(一)

    Retrofit 简单来说就是一个封装了Okhttp 的网络请求框架.(反正我是这么理解的,不对的请斧正) 优点:...

  • Android网络编程- 简要记录Retrofit的使用

    初识Retrofit网络框架,简要记录一下使用流程: 我理解的Retrofit Retrofit网络框架,本质上来...

  • 初识Retrofit

    添加依赖 权限 retrofit介绍 互联网上的资料很多很杂,在收集资料初步了解后,我先粗糙地认为:Retrofi...

  • Retrofit初识

    关于Retrofit Retrofit是一个针对Android和Java的类型安全的Http客户端/请求工具官网:...

  • 初识Okhttp和Retrofit

    Okhttp和Retrofit的出现已经有很长一段时间了,一直都没有去了解过它们,现在正好有一个机会去了解和使用,...

  • 初识Retrofit2

    文章首发自本人语雀,转载请注明出处(本文url) Type-safe HTTP client for Androi...

  • 初识Retrofit2

    基本使用 基本的使用方法官网就有一个点这里,步骤大致可能分为以下几步。 1.创建接口,使用注解声明url和参数 2...

  • Android知识点进阶-探究LiveData

    发现问题 初识livedata,想在项目中用着试试,于是尝试了个demo: 先定义retrofit接口ApiLib...

  • 从源码的角度分析Retrofit

    初识Retrofit,我觉得很神奇,体现在一下两点: 第一:仅凭注解和接口便可以执行网络请求。 public in...

  • 初识Retrofit2 —— Retrofit配置及基本使用

    本文旨在向初学者介绍Retrofit2这一网络框架。Retrofit与Retrofit2之间的Api改动较大,目前...

本文标题:08-16 初识Retrofit(一)

本文链接:https://www.haomeiwen.com/subject/eonnbftx.html