Retrofit2学习之三:GET请求

简介

Retrofit2 GET请求的请求参数支持Query、RESTful Path、Map及其任意组合形式。

官方文档:http://square.github.io/retrofit/

GET请求

创建业务请求接口

public interface Api {

    /**
     * Query参数
     * @param user_id
     * @return
     */
    @GET("user/info")
    Call<User> getUserInfoWithQuery(@Query("id") int user_id);

    /**
     * Path参数
     * @param user_id
     * @return
     */
    @GET("user/{id}")
    Call<User> getUserInfoWithPath(@Path("id") int user_id);

    /**
     * Map参数
     * @param params
     * @return
     */
    @GET("user/info")
    Call<User> getUserInfoWithMap(@QueryMap() Map<String, String> params);

}

创建一个Retrofit的实例,然后利用Retrofit实例创建接口对象和调用接口方法

public void getRequest(View view) {
    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(SERVER_ADDRESS)
            .addConverterFactory(GsonConverterFactory.create())
            .build();

    api = retrofit.create(Api.class);

    Map<String, String> map = new HashMap<>();
    map.put("id", "8");
    map.put("name", "AndroidiOS.cc");

    //api.getUserInfoWithQuery(8).enqueue(new Callback<User>() {
    //api.getUserInfoWithPath(8).enqueue(new Callback<User>() {
    api.getUserInfoWithMap(map).enqueue(new Callback<User>() {
        @Override
        public void onResponse(Call<User> call, Response<User> response) {
            //在UI主线程运行
            if (response.isSuccessful()) {
                Log.i(TAG, "返回成功");
                User user = response.body();
                if (user != null) {
                    Toast.makeText(MainActivity.this, "User Id: " + user.getId(), Toast.LENGTH_SHORT).show();
                }
            }
        }

        @Override
        public void onFailure(Call<User> call, Throwable t) {
            Log.i(TAG, "请求失败: " + t.getLocalizedMessage());
        }
    });
}

依次调用 getUserInfoWithQuerygetUserInfoWithPathgetUserInfoWithMap,服务端接收的的请求头如下,可见Map参数只是Query参数的拼接组合。

"GET /user/info?id=8 HTTP/1.1" 200 -
"GET /user/8 HTTP/1.1" 200 -
"GET /user/info?name=AppBlog.CN&id=8 HTTP/1.1" 200 -
上一篇 Retrofit2学习之二:Retrofit 转换器
下一篇 Retrofit2学习之四:POST请求
目录
文章列表
1 Flutter Widget之Image
Flutter Widget之Image
2
Redis 6 服务器集群搭建
Redis 6 服务器集群搭建
3
Atlas Dex分包配置
Atlas Dex分包配置
4
Android Hook无清单启动Activity的应用
Android Hook无清单启动Activity的应用
5
关于Java中RSA加签解签,私钥加密公钥解密和公钥加密私钥解密代码详解
关于Java中RSA加签解签,私钥加密公钥解密和公钥加密私钥解密代码详解
最新评论
一位WordPress评论者
一位WordPress评论者
2月12日
您好,这是一条评论。若需要审核、编辑或删除评论,请访问仪表盘的评论界面。评论者头像来自 Gravatar。