【问题标题】:retrofit get request returns null改造获取请求返回 null
【发布时间】:2022-01-05 23:00:45
【问题描述】:

我使用从新闻 api 中提取文章并在我的项目中使用分页 3 库显示它们,但由于某种原因,@GET 请求返回我的响应类,但带有 null 变量,尽管在我在新闻 api 网站上的个人资料中显示有一个请求。

NewsApi 类:

interface NewsApi {

companion object{
    const val CLIENT_ID = "356d64b4bfde4cd492ef415beabba030"
    const val BASE_URL = "https://newsapi.org/"
}

@Headers("X-Api-Key: ${CLIENT_ID}")
@GET("v2/everything")
suspend fun searchArticles (
    @Query("q") query: String,
    @Query("page") page: Int,
    @Query("pageSize") pageSize: Int,
) : NewsResponse

}

我的响应类:

data class NewsResponse (
val results: List<NewsArticle>)

【问题讨论】:

  • 这是不可能的,因为返回类型不可为空。它将返回 Response 类的实例或抛出异常。是什么让您信服返回值为 null?你是如何检索它的?
  • 在描述中我说它返回一个带有空变量(列表)的对象。只是不想在标题中解释这一点
  • 该列表也不能为空。无论如何,您可以先尝试在网络浏览器中发出相同的请求,看看是否能得到预期的响应。
  • 在浏览器中有效
  • 你能分享一下回复吗?

标签: android kotlin retrofit


【解决方案1】:

我尝试了您的 api 并获取结果, 你的 Api 很好,问题是你试图得到结果

data class NewsResponse (
val results: List<NewsArticle>)

当结果实际上是这样形成时:

{
"status":"ok",
"totalResults":14925,
"articles":[
{
"author":"Igor Bonifacic",
"title":"University of ",
"description":"In aide built a robot to com…"
}
]
}

所以把你的结果改成:

data class NewsResponse(
    val status : String,
    val totalResults: Int,
    val articles: List<NewsArticle>
)

data class NewsArticle(
    val author: String,
    val description: String
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-13
    • 1970-01-01
    • 2017-11-06
    • 1970-01-01
    • 1970-01-01
    • 2015-11-25
    • 2022-01-05
    • 1970-01-01
    相关资源
    最近更新 更多