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

Android电影搜索App请求仅返回错误,求技术排查

Android电影搜索应用请求失败问题排查

以下是针对你代码的几个关键排查点及修复建议:

1. 补充非成功响应的错误处理

当前代码仅处理了response.isSuccessful为true的场景,完全忽略了API返回4xx/5xx错误的情况(比如API Key无效、参数错误),导致无法定位具体问题。修改onResponse方法:

override fun onResponse(call: Call<MovieResponse>, response: Response<MovieResponse>) {
    if (response.isSuccessful) {
        // 原有逻辑不变
    } else {
        // 打印错误状态码和响应体,方便排查
        val errorMsg = "响应失败: 状态码${response.code()},信息${response.message()}"
        Log.e("MovieSearch", errorMsg)
        label.text = getString(R.string.error)
        info.text = errorMsg
    }
}

2. 检查MovieApiService的接口定义

OMDb搜索电影的核心参数是s(搜索关键词)和apikey,确保你的接口方法参数名完全匹配:

interface MovieApiService {
    @GET(".")
    fun searchMovie(
        @Query("apikey") apiKey: String,
        @Query("s") title: String
    ): Call<MovieResponse>
}

如果参数名写错(比如用title代替s),API会返回无效响应。

3. 解决HTTP明文请求限制

Android 9及以上默认禁止HTTP明文请求,你使用的http://www.omdbapi.com/是HTTP协议,需在AndroidManifest.xml的<application>标签中添加配置:

<application
    ...
    android:usesCleartextTraffic="true">
    ...
</application>

否则请求会直接被系统拦截,进入onFailure回调。

4. 打印失败异常信息

当前onFailure仅显示错误提示,没有输出具体异常原因,无法区分是网络问题、解析问题还是API问题。修改onFailure:

override fun onFailure(call: Call<MovieResponse>, t: Throwable) {
    Log.e("MovieSearch", "请求失败", t)
    label.text = getString(R.string.error)
    info.text = t.localizedMessage ?: "未知错误"
}

5. 验证数据类字段映射

OMDb返回的搜索结果JSON字段是驼峰大写开头(比如Title、Year、Poster、Type),确保你的MovieResponse和Movie数据类用@SerializedName正确映射:

data class MovieResponse(
    @SerializedName("Search") val search: List<Movie>?,
    @SerializedName("Response") val response: String?
)

data class Movie(
    @SerializedName("Title") val title: String?,
    @SerializedName("Year") val releaseYear: String?,
    @SerializedName("Poster") val posterPath: String?,
    @SerializedName("Type") val genre: String?
)

如果字段映射错误,Gson解析会失败,导致response.body()为null,甚至触发onFailure。

6. 确认API Key有效性

检查你替换的MY_KEY是否为OMDb官网申请的有效Key,无效Key会导致API返回401错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 03:56:16