You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Retrofit2中使用GET请求如何传递查询参数?

Retrofit GET请求传递查询参数的几种方法

嘿,我来帮你搞定Retrofit GET请求的查询参数传递问题!针对你给出的这个接口:

@GET("/datas/") Call<List> getDataInfo();

这里有几种常用且实用的方式,我给你一一拆解:

1. 单个参数用@Query注解

这是最直接的方式,你只需要在方法的参数列表里添加@Query("参数名")注解,Retrofit会自动把参数拼接到URL的查询串中。

比如你需要传递page(页码)和size(每页数量)两个参数,接口可以改成这样:

@GET("/datas/")
Call<List<Data>> getDataInfo(@Query("page") int page, @Query("size") int size);

调用的时候直接传入对应的值就行,比如:

// 调用示例,请求URL会变成 /datas/?page=1&size=10
apiService.getDataInfo(1, 10).enqueue(new Callback<List<Data>>() {
    @Override
    public void onResponse(Call<List<Data>> call, Response<List<Data>> response) {
        // 处理成功响应
        if (response.isSuccessful()) {
            List<Data> dataList = response.body();
            // ... 你的业务逻辑
        }
    }

    @Override
    public void onFailure(Call<List<Data>> call, Throwable t) {
        // 处理请求失败
        t.printStackTrace();
    }
});

小提示:如果某个参数可能为空,可以把参数类型改成包装类(比如Integer代替int),当参数为null时,Retrofit会自动忽略这个参数,不会拼到URL里。

2. 多个/动态参数用@QueryMap注解

如果你的查询参数数量不确定,或者参数较多,用@QueryMap会更灵活。你可以把所有参数放到一个Map里,Retrofit会自动遍历Map把键值对拼到URL中。

修改后的接口:

@GET("/datas/")
Call<List<Data>> getDataInfo(@QueryMap Map<String, Object> params);

调用时创建Map并放入参数:

Map<String, Object> params = new HashMap<>();
params.put("page", 1);
params.put("size", 10);
params.put("category", "tech"); // 额外的分类参数

apiService.getDataInfo(params).enqueue(new Callback<List<Data>>() {
    // 同上的响应处理逻辑
});

这样请求URL会变成/datas/?page=1&size=10&category=tech。

3. 特殊场景:编码参数

如果你的参数包含特殊字符(比如空格、中文),可以设置@Query的encoded属性为true,避免Retrofit自动重复编码:

@GET("/datas/")
Call<List<Data>> getDataInfo(@Query("keyword") String keyword);
// 默认会自动编码,比如传入"安卓开发"会变成"%E5%AE%89%E5%8D%93%E5%BC%80%E5%8F%91"

// 如果已经手动编码过,就设置encoded=true:
@GET("/datas/")
Call<List<Data>> getDataInfo(@Query(value = "keyword", encoded = true) String encodedKeyword);

内容的提问来源于stack exchange,提问作者user11022957

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 03:54:14