【发布时间】:2020-06-14 15:21:48
【问题描述】:
在 iOS 开发中,当我获取显示 XML 的 URL 时,我可以解析整个 XML 文件并在我的代码中使用它的数据,但在 Kotlin 中我尝试获取相同的 URL,它只返回第一个 XML 标记,例如如果其余部分隐藏在主标签中。
val urlString = URL_TO_FETCH_IN_HTTPS (String)
val client = OkHttpClient()
val request = Request.Builder().url(urlString).build()
client.newCall(request).enqueue(object: Callback {
override fun onResponse(call: Call, response: Response) {
if (response.isSuccessful) {
val body = response.body?.string()
println("RESPONSE " + body)
}
}
override fun onFailure(call: Call, e: IOException) {
println("Failure")
}
})
这个调用的响应只是
RESPONSE < ?xml version="1.0" encoding="UTF-8"?>< rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
虽然url不错,浏览器返回的xml也不错。
那么我在代码中做错了什么?如何在此 url 获取整个 XML?
我使用 OkHttp 库从 URL 获取数据
【问题讨论】:
-
整个 XML 是什么意思?你期待什么回应?
-
我希望通过此链接lexilife.com/rss 检索 xml 的内容,以及我可以解析的所有数据。它是 Prestashop API 返回的 xml 文件
-
你确定你正确安装了 prestashop 吗?你确定使用正确的 apikey 吗?您也可以尝试像这样添加 ?output_format=JSON :UCCLLQ9N2ARSHWCXLT74KUKSSK34BFKX@example.com/api/… 以获得可能比 xml 更有用的 json 格式。我在我这边获取数据没有问题。您是否也尝试按照我的建议添加拦截器?调试非常简单
-
好吧,我的错,新手错误^^问题是我的日志的响应是“RESPONSE ”因为当我在logcat中搜索日志时,我在搜索栏中输入了“RESPONSE”,所以它只给了我第一行......在 iOS 中,它会在日志中的“RESPONSE”字旁边写下整个对象
-
OK,祝你项目好运,无论如何尝试为 okhttp 添加拦截器,我给你的只是几行,非常方便。
标签: android xml parsing kotlin okhttp