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

Retrofit根据ID获取OMDBAPI详情返回空值问题求助

解决OMDB API详情请求返回空值的问题

看起来你在Retrofit接口定义上犯了一个参数匹配的错误,这直接导致请求URL不符合OMDB API的要求,所以返回了空值。咱们一步步来修正:

问题根源分析

OMDB API的详情请求需要的是i参数来传递imdbID(比如示例URL里的i=tt037),但你的接口定义有两处错误:

  • 你在@GET的路径里硬编码了&i=,这会在URL里生成多余的空值参数
  • 你用@Query("imdbID")来传递ID,而OMDB API期望的参数名是i,不是imdbID

这两个错误叠加后,实际生成的请求URL会变成:
http://www.omdbapi.com/?apikey=3e974fca&i=&imdbID=tg037
显然这个URL不符合API要求,所以返回空数据。

修正后的APIService接口

你有两种正确的写法可以选择:

写法一:硬编码apikey,用@Query传递i参数

public interface APIService {
    // 移除@GET里的&i=,用@Query("i")传递imdbID
    @GET("?apikey=3e974fca")
    Call<Example> getDetails(@Query("i") String imdbId);
}

写法二:把apikey也作为@Query参数(更灵活,方便后续修改)

public interface APIService {
    @GET("")
    Call<Example> getDetails(
        @Query("apikey") String apiKey,
        @Query("i") String imdbId
    );
}
// 调用时需要传入apikey:
Call<Example> call1 = mAPIService.getDetails("3e974fca", id);

额外检查项

除了接口修正,还要确认你的Example实体类是否正确映射了OMDB API返回的JSON字段:

  • 确保实体类的字段名和JSON返回的键名一致,或者用@SerializedName注解做映射(比如JSON里是Actors,实体类里如果是actors,需要加@SerializedName("Actors"))
  • 检查实体类的字段类型是否匹配(比如字符串、整数等)

修正后的loginRetrofitFlag方法(对应写法一)

private void loginRetrofitFlag(String id) {
    Call<Example> call1 = mAPIService.getDetails(id);
    call1.enqueue(new Callback<Example>() {
        @Override
        public void onResponse(Call<Example> call, Response<Example> response) {
            if (response.isSuccessful() && response.body() != null) {
                Example loginResponse = response.body();
                Log.e("test", loginResponse.getActors());
            } else {
                // 处理请求成功但返回空的情况,比如打印响应码
                Log.e("test", "Response not successful: " + response.code());
            }
        }

        @Override
        public void onFailure(Call<Example> call, Throwable t) {
            Log.e("test", "Request failed: " + t.getMessage());
            call.cancel();
        }
    });
}

这样修改后,生成的请求URL就会符合OMDB API的要求(比如http://www.omdbapi.com/?apikey=3e974fca&i=tg037),应该就能正确获取到详情数据了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 10:47:49