改造获取请求返回 null
Posted
技术标签:
【中文标题】改造获取请求返回 null【英文标题】:retrofit get request returns 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?你是如何检索它的? 在描述中我说它返回一个带有空变量(列表)的对象。只是不想在标题中解释这一点 该列表也不能为空。无论如何,您可以先尝试在网络浏览器中发出相同的请求,看看是否能得到预期的响应。 在浏览器中有效 你能分享一下回复吗? 【参考方案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
)
【讨论】:
以上是关于改造获取请求返回 null的主要内容,如果未能解决你的问题,请参考以下文章