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 -

版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/02/25/retrofit2-learning-3-get-request/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
打赏
海报
Retrofit2学习之三:GET请求
简介 Retrofit2 GET请求的请求参数支持Query、RESTful Path、Map及其任意组合形式。 官方文档:http://square.github.io/retrofit/ GET请求 创建业务请求接口……
<<上一篇
下一篇>>
文章目录
关闭
目 录