Android Retrofit 无法解析数据 Rss feed?
您好,我无法解析数据 这是基本网址 https://api.rss2json.com/v1/api.json?rss_url=http://www.abc.net.au/news/feed/51120/rss.xml/
这是我的代码-->
@GET("/api.json")
fun getNewTestFeeds(@Query( "rss_url") query :String) : Response<List<Model>>
companion object{
val BASEURL = "https://api.rss2json.com/v1/"
rss_url=http://www.abc.net.au/news/feed/"
var retrofitService : RetrofitService? = null
fun getInstance(): RetrofitService{
if (retrofitService ==null){
val retrofit = Retrofit.Builder()
.baseUrl(BASEURL)
.addConverterFactory(GsonConverterFactory.create())
.addConverterFactory(SimpleXmlConverterFactory.create())
.build()
retrofitService = retrofit.create(RetrofitService::class.java)
}
return retrofitService!!
}
}
和我的存储库
suspend fun getTestFeeds() =
retrofitService.getAllFeeds("http://www.abc.net.au/news/feed/51120/rss.xml")
和我的视图模型
fun getAllFeeds(){
CoroutineScope(Dispatchers.IO).launch {
loading.postValue(true)
val response = mainRepository.getTestFeeds()//getAllFeeds()
withContext(Dispatchers.Main){
if (response.isSuccessful){
feedList.postValue(response.body())
loading.value = false
}else
Log.i(TAG, "getAllFeeds:" +
" ${response.message()} and ${response.body().toString()}" +
" errorbody ${response.errorBody().toString()}")
onError("Error :response.message()}")
}
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您请求返回 JsonObject 而不是数组,因此它不应该是列表。
所以声明你的响应类如下
并且请求应该是
You request returns JsonObject not array so it's should not be list.
so declare your response class like below
And request should be
api 的响应是一个对象,但您需要的是列表。
使用 https://www.json2kotlin.com/ 从 json 生成数据类并遵循响应结构。它应该只是
Response
而不是Response
>
The response from the api is an object but you are expecting the list.
Use https://www.json2kotlin.com/ to generate the data class from the json and follow the response structure. It should be just
Response<SomeModel>
notResponse<List<Model>>
首先根据 api 的响应,您的响应以对象而不是数组开始
那么您的序列化是错误的
此类对象响应
,因此您的函数 getNewTestFeeds 像这样
然后移动存储库文件您使用了错误的方法名称,您必须调用此方法
像这样
,然后在 viewModel 上您想要在实时数据上设置列表
First according on your response from api your response start with object not array
then your serializable is wrong
this class of object response
so your function
getNewTestFeeds
like thisthen move repository file you use wrong name of method you must call this method
like this
then on viewModel you want set list on live data