当前位置:   article > 正文

Android 网络请求框架retrofit_android网络请求框架

android网络请求框架

Retrofit是一款使用简单且功能强大的Android网络请求框架。它通过注解方式将Http请求与Java方法进行映射,从而简化网络请求的实现流程。

Retrofit的优点:

  • 支持同步和异步请求;
  • 支持GET、POST、PUT、DELETE等HTTP方法;
  • 支持参数拼接、header设定、文件上传、下载等多种请求方式;
  • 可以方便地解析服务器返回的JSON、XML等格式的数据。

Retrofit的使用:

  • 引入依赖:在build.gradle文件中添加以下依赖:

    implementation 'com.squareup.retrofit2:retrofit:2.9.0'
    implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
    
    
    • 1
    • 2
    • 3
  • 定义API接口:定义一个包含请求方法的接口,使用注解来描述方法和参数,示例代码如下:

    public interface ApiService {
    
        // 请求方式 + 请求地址
        @GET("api/login")
        // 方法参数
        Call<User> login(@Query("username") String username, @Query("password") String password);
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
  • 创建Retrofit实例:创建一个Retrofit的实例,并指定base URL,示例代码如下:

    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl("<https://www.example.com/>")
            .addConverterFactory(GsonConverterFactory.create())
            .build();
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
  • 创建API实例:使用Retrofit创建一个API实例,示例代码如下:

    ApiService apiService = retrofit.create(ApiService.class);
    
    
    • 1
    • 2
  • 发送请求:调用API接口中的方法发送请求,示例代码如下:

    Call<User> call = apiService.login("username", "password");
    call.enqueue(new Callback<User>() {
            @Override
            public void onResponse(Call<User> call, Response<User> response) {
                // 请求成功回调
                User user = response.body();
            }
    
            @Override
            public void onFailure(Call<User> call, Throwable t) {
                // 请求失败回调
            }
        });
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

Retrofit注解

1.请求方法注解

请求方法注解说明
@GETget请求
@POSTpost请求
@PUTput请求
@DELETEdelete请求
@PATCHpatch请求,该请求是对put请求的补充,用于更新局部资源
@HEADhead请求
@OPTIONSoptions请求
@HTTP通过注解,可以替换以上所有的注解,它拥有三个属性:method、path、hasBody

2.请求头注解

请求头注解说明
@Headers用于添加固定请求头,可以同时添加多个,通过该注解的请求头不会相互覆盖,而是共同存在
@Header作为方法的参数传入,用于添加不固定的header,它会更新已有请求头

3.请求参数注解

请求参数注解说明
@Body多用于Post请求发送非表达数据,根据转换方式将实例对象转化为对应字符串传递参数,比如使用Post发送Json数据,添加GsonConverterFactory则是将body转化为json字符串进行传递
@Filed多用于Post方式传递参数,需要结合@FromUrlEncoded使用,即以表单的形式传递参数
@FiledMap多用于Post请求中的表单字段,需要结合@FromUrlEncoded使用
@Part用于表单字段,Part和PartMap与@multipart注解结合使用,适合文件上传的情况
@PartMap用于表单字段,默认接受类型是Map<String,RequestBody>,可用于实现多文件上传
@Path用于Url中的占位符
@Query用于Get请求中的参数
@QueryMap与Query类似,用于不确定表单参数
@Url指定请求路径

4.请求和响应格式(标记)注解

标记类注解说明
@FromUrlCoded表示请求发送编码表单数据,每个键值对需要使用@Filed注解
@Multipart表示请求发送form_encoded数据(使用于有文件上传的场景),每个键值对需要用@Part来注解键名,随后的对象需要提供值
@Streaming表示响应用字节流的形式返回,如果没有使用注解,默认会把数据全部载入到内存中,该注解在下载大文件时特别有用

相关参考

https://juejin.cn/post/6978777076073660429

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/815618
推荐阅读
相关标签
  

闽ICP备14008679号