• Android实战——Retrofit2的使用和封装


    使用项目的原话:Android和Java中类型安全的HTTP客户端
    项目地址:https://github.com/square/retrofit

    这里Retrofit还需要导入它的Gson依赖库,因为返回的数据需要Gson来处理

    1、Get请求
    2、Post请求
    3、单、多文件上传

    演示提供的接口(该接口不支持post方式)

    get请求(支持普通请求)

    get请求(支持键值对参数)

    Post请求(支持键值对参数)

    Post请求(支持获取返回的字符串)

    Post请求(上传文件和参数)

    Retrofit的请求是以REST请求方式发送请求的,所以工具的封装需要做两件事

    • 对REST请求的API进行封装
    • Retrofit自身的封装

    由于我们接口返回的JSON数据如下

    所以这里需要对我们需要解析的数据进行Bean对象的封装

    Retrofit使用注解的方式来声明GET请求、POST请求、请求参数、请求头等进行的网络访问,下面是各个注解的表示的意思

    • Get请求相关

      • @Get:发送Get请求
      • @Query:Get请求参数
      • @QueryMap:Get请求Map参数
    • Post请求相关

      • @Post:发送Post请求
      • @FormUrlEncoded:采用表单的方式,一般与@Post共用
      • @Field:Post请求参数
      • @FieldMap:Post请求Map参数
    • Header请求相关

      • @Headers:发送Header信息
      • @Header:Header信息参数
      • @HeaderMap:Header信息的Map参数
    • Path请求相关

    理解完意思之后,编写REST的API,其实就是请求接口,具体看下面的代码

    Retrofit和okHttp一样,采用构造者模式创建,采用单例模式防止使用多个对象

    上面代码做了三件事

    • 绑定请求URL
    • 采用GSON来处理返回的JSON数据
    • 创建并返回REST请求API接口iServer

    下面就可以直接使用工具类拿到这个iServer,调用提供的接口方法

    API接口的创建,比如说注册功能,需要上传两张身份证照片,这是我自己服务器的接口

    • @PartMap:表示参数的上传
    • @Part:表示文件列表

    创建两个方法辅助PartMap和Part的创建

    到这里,你就可以回过头去看下文章开头的演示部分,那里就是RetrofitUtils的使用

    由于文件上传是我在做项目的时候用上的,工具类缺少文件上传的内容,大家可以自行去拷贝代码

  • 相关阅读:
    Vue demo
    netcore使用IOptions
    CS0656 缺少编译器要求的成员“Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo.Create”
    vs删除空白行 注释
    RabbitMQ入门
    EF 大数据量批量处理
    常用链接字符串
    DEA使用git提交代码时,点了commit之后卡死在performing code analysis部分,或者performing code analysis结束后没有进入下一步操作。
    Ubuntu16.04安装MySQL5.7
    ubuntu16.04源码编译安装nginx1.14.2
  • 原文地址:https://www.cnblogs.com/zhanglixina/p/9603735.html
Copyright © 2020-2023  润新知