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

Android中用Retrofit调用GitHub搜索API遇HTTP 422错误求助

解决Retrofit调用GitHub搜索API返回HTTP 422的问题

HTTP 422(Unprocessable Entity)错误的核心原因是GitHub API强制要求所有请求携带User-Agent请求头,而Retrofit默认不会自动添加该头,导致请求被API拒绝。以下是具体解决步骤:

1. 为OkHttpClient添加User-Agent拦截器

通过OkHttp拦截器为所有请求注入User-Agent字段(可填写你的应用名称、GitHub用户名等标识信息):

val okHttpClient = OkHttpClient.Builder()
    .addInterceptor { chain ->
        val modifiedRequest = chain.request().newBuilder()
            // 替换为你的应用标识,比如"MyGitHubSearchApp"
            .header("User-Agent", "Your-App-Identifier")
            .build()
        chain.proceed(modifiedRequest)
    }
    .build()

2. 绑定配置好的OkHttpClient到Retrofit

创建Retrofit实例时使用上述配置的OkHttpClient,同时确保已添加JSON转换器(如GsonConverterFactory):

val retrofit = Retrofit.Builder()
    .baseUrl("https://api.github.com/")
    .client(okHttpClient)
    .addConverterFactory(GsonConverterFactory.create())
    .build()

val apiService = retrofit.create(ApiService::class.java)

额外排查点

若添加User-Agent后问题仍存在,可检查以下内容:

  • 调用getUsers时传入的searchQuery参数是否为空或无效值(比如空字符串)
  • 核对UserResponse及内部Item的字段名是否与GitHub API返回的JSON字段完全匹配(注意下划线命名的一致性)
  • 确认AndroidManifest.xml中已声明网络权限:<uses-permission android:name="android.permission.INTERNET" />

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 11:01:27