美文网首页
Retorfit 基本用法

Retorfit 基本用法

作者: anonymous_6bb6 | 来源:发表于2020-04-26 16:28 被阅读0次

    介绍

    Retorfit 是一个 RESTFul 的 HTTP 网络请求框架的封装,底层连接网络的工作是由 OkHttp 来完成的。Retrofit 提供的是将网络请求接口化

    使用

    1. 添加 Retorfit 库的依赖 官网
    implementation 'com.squareup.retrofit2:retrofit:2.0.2'
    
    1. 创建描述网络请求的接口
    public interface GetService {
        @GET("users/{user}/repos")
        Call<String> getRepos(@Path("user") String user);
    }
    
    1. 创建Retrofit 实例
    Retrofit retrofit = new Retrofit.Builder()
                    .baseUrl("xxxx.xxxx")
                    .build();
    
    1. 创建网络接口实例
      GetService getAnswer = retrofit.create(GetService.class);
    2. 发送网络请求
    Call call = getAnswer.getRepos("daniel");
    

    同步

    Call call = getAnswer.getRepos("daniel");
            try {
                call.execute();
            } catch (IOException e) {
                e.printStackTrace();
            }
    

    异步

    call.enqueue(new Callback() {
                @Override
                public void onResponse(Call call, Response response) {
                }
                @Override
                public void onFailure(Call call, Throwable t) {
                }
            });
    

    API 讲解

    接口注解
    接口方法的注解和接口参数上的注解是用来指示如何来建立请求。Retrofit 库规定,每一个接口方法都要用注解来提供请求方式以及请求的相对路径。

    1 网络请求方法

    请求方法除了上述的@GET之外,还有@HTTP @POST @PUT @PATCH @DELETE @OPTIONS @ HEAD,而相对URL可以注解中指定出来@GET("users/list"),还可以在URL中指定查询参数@GET("users/list?sort=desc")
    请求URL也是可以通过参数动态更新的,被替换的字符串需要用{}括起来,同时在参数中要用@Path(“”)来标记需要进行替换的参数

    @GET("group/{id}/users")
    Call<List<User>> groupList(@Path("id") int groupId);
    

    对于较为复杂的query参数,可以使用@QueryMap

    @GET("group/{id}/users")
    Call<List<User>> groupList(@Path("id") int groupId, @QueryMap Map<String, String> options);
    
    2 请求体类型

    接口方法同样可以用注解的方式声明请求体类型,用到的注解有
    @FormUrlEncoded

    @FormUrlEncoded
    @POST("user/edit")
    Call<User> updateUser(@Field("first_name") String first, @Field("last_name") String last);
    

    其中参数用@Field("表单Key"), 后面的参数来表示Value

    @Mutipart

    @Multipart
    @PUT("user/photo")
    Call<User> updateUser(@Part("photo") RequestBody photo, @Part("description") RequestBody description);
    

    参数需要用@Part来标记

    3 网络请求参数

    @Headers @Header(用于参数中) 用来添加请求头
    @Field @ FieldMap用于添加表单数据到请求体中
    @Part @PartMap 用于添加有文件上传的表单到请求体中
    @Query @QueryMap生成URL上的表单数据

    相关文章

      网友评论

          本文标题:Retorfit 基本用法

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