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

Android Studio使用Retrofit如何正确传递链接intitle请求参数

写法存在的问题
  • 基础语法错误:Java方法定义规范要求返回值类型必须紧邻方法名,给出的代码将泛型返回值Call<ResponseModelsSearch.Search>写在了void关键字前,属于非法语法,代码无法通过编译,根本不会发起有效网络请求。
  • 缺少接口强制校验的必填参数:Stack Exchange搜索接口要求所有请求必须携带order、sort、site三个查询参数,当前写法仅声明了intitle参数,未携带另外三个必填项,即便修正语法问题,请求也会被接口拦截,返回参数错误响应。
正确实现方式
  1. 修正接口方法的语法错误,删除多余的void声明,将返回值正确设置为Call<ResponseModelsSearch.Search>类型。
  2. 补全接口要求的三个固定必填参数,推荐直接把固定参数写在@GET注解的请求路径中,避免每次调用重复传参。

正确的接口定义代码如下:

import retrofit2.Call;
import retrofit2.http.GET;
import retrofit2.http.Query;

public interface StackOverflowApi {
    @GET("search?order=desc&sort=activity&site=stackoverflow")
    Call<ResponseModelsSearch.Search> getSearch(@Query("intitle") String intitle);
}

发起请求的调用示例:

// 初始化Retrofit实例
Retrofit retrofit = new Retrofit.Builder()
        .baseUrl("https://api.stackexchange.com/2.3/")
        .addConverterFactory(GsonConverterFactory.create())
        .build();

StackOverflowApi api = retrofit.create(StackOverflowApi.class);
// 传入要搜索的标题关键词即可发起请求
Call<ResponseModelsSearch.Search> searchCall = api.getSearch("retrofit");
searchCall.enqueue(/* 实现自定义请求回调逻辑 */);

如果后续需要动态调整排序方式、排序规则,也可以把三个固定参数改成@Query动态传入,写法如下:

@GET("search")
Call<ResponseModelsSearch.Search> getSearch(
        @Query("order") String order,
        @Query("sort") String sort,
        @Query("site") String site,
        @Query("intitle") String intitle
);

调用时传入对应固定值即可:

Call<ResponseModelsSearch.Search> searchCall = api.getSearch("desc", "activity", "stackoverflow", "retrofit");

注意:初始化Retrofit时配置的baseUrl必须匹配Stack Exchange API的当前稳定版本(v2.3),请设置为https://api.stackexchange.com/2.3/,baseUrl末尾的斜杠不能省略,否则会出现路径拼接错误,导致请求地址异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 00:39:45