retrofit简单使用

作者: 众少成多积小致巨 | 来源:发表于2019-08-12 23:32 被阅读0次

参考

implementation 'com.squareup.retrofit2:retrofit:(insert latest version)'

使用步骤:

1、声明请求接口

public interface GitHubService {

  @GET("users/{user}/repos")

  Call<List<Repo>> listRepos(@Path("user") String user);

}

2、Retrofit实例

Retrofit retrofit = new Retrofit.Builder()

    .baseUrl("https://api.github.com/")

    .build();

3、获得接口实例

GitHubService service = retrofit.create(GitHubService.class);

4、调用接口方法请求

Call<List<Repo>> repos = service.listRepos("octocat");

 <List<Repo = repos.execute().body();    //同步获取

异步获取

repos .enqueue(new Callback<List<Repo>>() {

    @Override

    public void onResponse(Call<List<Repo>> call, Response<List<Repo>> response) {

        if (response.isSuccessful()) {

            // tasks available

        } else {

            // error response, no access to resource?

        }

    }

    @Override

    public void onFailure(Call<List<Repo>> call, Throwable t) {

        // something went completely south (like no internet connection)

        Log.d("Error", t.getMessage());

    }

}

请求接口

返回结果类型为: Call<实际结果类型>

方法注释:内置了5中注释GET,POST,PUT,DELETE, HEAD;可在它们基础上增加其它注释,这些注释为增加请求头信息或请求体信息类别

替换: 注释内容中使用{name},在参数中使用@Path("name"), name为字段名字

方法参数:

 1、@Query("sort") String sort      

2、 @QueryMap Map<String, String> options   

3、注释类型为POST时,增加请求体 @Body

4、请求体也可为值对,增加方法注释@FormUrlEncoded,参数 @Field("first_name") String first

5、请求体为多个部分,增加方法注释 @Multipart, 参数:@Part("photo") RequestBody photo, @Part("description") RequestBody description

6、增加头注释 @Headers("Cache-Control: max-age=640000"),设置header

7、方法参数:@Header("Authorization") String authorization, 效果同6 

8、参数 @HeaderMap Map<String, String> headers 设置多个

添加gson转换

Retrofit retrofit = new Retrofit.Builder()

    .baseUrl("https://api.github.com")

    .addConverterFactory(GsonConverterFactory.create())

    .build();

相关文章

网友评论

    本文标题:retrofit简单使用

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