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

Retrofit2调用Wikipedia API未获取预期响应问题排查

问题分析与解决办法

针对你遇到的两个问题,我分别拆解原因并给出解决方案:

一、Retrofit请求后pages字段为空的问题

浏览器能正常获取结果但Retrofit返回pages为空,大概率是Gson解析实体类的结构不匹配——结合维基MediaWiki API的返回格式,这里的pages是一个以页面ID为动态键的JSON对象,而非数组或固定结构的对象。

原因详解

维基API的返回结构大致如下:

{
  "query": {
    "pages": {
      "123456": {
        "pageid": 123456,
        "title": "Image:Monet 1871 Seascape.jpg",
        "imageinfo": [
          { "url": "https://upload.wikimedia.org/..." }
        ]
      }
    }
  }
}

如果你的WikiObject类中pages字段定义为普通对象或List,Gson无法解析这种动态键的结构,就会导致pages为空。

解决办法

修改WikiObject的结构,将pages定义为Map<String, PageDetail>(其中PageDetail是对应页面信息的实体类):

public class WikiObject {
    private Query query;

    public static class Query {
        // 用Map接收动态键的pages对象
        private Map<String, PageDetail> pages;

        // getter/setter方法
    }

    public static class PageDetail {
        private int pageid;
        private String title;
        private List<ImageInfo> imageinfo;

        // getter/setter方法
    }

    public static class ImageInfo {
        private String url;

        // getter/setter方法
    }

    // getter/setter方法
}

另外再排查两个小细节:

  • 确认@Query参数的编码:Retrofit默认会对titles中的空格等特殊字符进行URL编码,和浏览器行为一致,这部分应该没问题,但可以通过抓包工具(如Charles)验证实际请求URL;
  • 确保format参数正确:你调用时传了"json",和浏览器请求的默认行为一致,无需调整。

二、Unable to resolve Lretrofit2/Response; annotation class 7336' 错误

这个错误是Retrofit相关类无法被找到,核心是依赖或构建配置问题,常见原因和解决办法如下:

可能原因1:依赖版本不兼容或未正确引入

确保你的构建文件(Gradle/Maven)中引入了正确的Retrofit和Gson Converter依赖,且版本完全一致。比如Gradle配置:

// Retrofit核心依赖
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
// Gson Converter依赖
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'

注意:Retrofit与Converter的版本必须严格匹配,否则会出现类找不到的问题。

可能原因2:构建缓存或同步问题

  • 执行Clean Project和Rebuild Project(Android Studio),清除旧的构建缓存;
  • 刷新Gradle/Maven依赖,确保所有依赖都正确下载到本地仓库。

可能原因3:混淆配置问题

如果你的项目开启了代码混淆(ProGuard/R8),需要在混淆规则中添加Retrofit的排除规则,避免核心类被混淆:

# Retrofit相关混淆规则
-dontwarn retrofit2.**
-keep class retrofit2.** { *; }
-keepattributes Signature
-keepattributes Exceptions

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 09:53:14