![](/img/trans.png)
[英]Retrofit gives null response while calling Post request from android
[英]Kotlin - Retrofit request using RxJava gives null response
我正在嘗試從Guardian API獲取新聞。 我得到空響應,所有內容都在下面。 我正在使用Kotlin,Retrofit和RxJava。 我知道有些錯誤的變量/對象,但是當我擺脫這個問題時,我將對其進行更改。
改造界面
@get:GET("search?api-key=test")
val news:Observable<News>
改造客戶
val instance : Retrofit
get() {
if (myInstance == null) {
myInstance = Retrofit.Builder()
.baseUrl("https://content.guardianapis.com/")
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.build()
}
return myInstance!!
}
和我要加載數據的地方
private fun loadUrlData() {
compositeDisposable.add(jsonApi.news
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe{news -> displayData(news)})
}
JSON范例
{
response:{
status:"ok",
userTier:"developer",
total:2063064,
startIndex:1,
pageSize:10,
currentPage:1,
pages:206307,
orderBy:"newest",
results:[
{
id:"politics/2018/sep/24/keir-starmer-labour-does-not-rule-out-remaining-in-eu",
type:"article",
sectionId:"politics",
sectionName:"Politics",
webPublicationDate:"2018-09-24T18:57:48Z",
webTitle:"Keir Starmer: Labour does not rule out remaining in EU as option",
webUrl:"https://www.theguardian.com/politics/2018/sep/24/keir-starmer-labour-does-not-rule-out-remaining-in-eu",
apiUrl:"https://content.guardianapis.com/politics/2018/sep/24/keir-starmer-labour-does-not-rule-out-remaining-in-eu",
isHosted:false,
pillarId:"pillar/news",
pillarName:"News"
}
]
}
}
模型類
data class News( val status: String, val userTier: String, val total: Int, val startIndex: Int, val pageSize: Int, val currentPage: Int, val pages: Int, val orderBy: String, val results: List<Result>)
我想問題出在最后一個函數或接口上,但是我找不到解決方案。
問題出在您的數據模型類之內。
您的JSON有一個外部節點( response
),如果您嘗試返回一個News
,則不會得到它,因為Retrofit
無法將JSON映射到News
類。 添加一個名為Response
的外部類,該類包含一個名為News
的字段response,該字段應該對其進行修復。
像這樣:
class Response(val response: News)
注意:由於您不一定需要data
,因此我沒有在課程前面添加data
。 data
關鍵字只是自動為您添加了一些額外的東西,例如toString()
, equals()
和hashCode()
,但是除非您實際上將它們用於任何用途,否則我不建議您添加data
關鍵字,因為那樣就沒有用了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.