我将retrofit
与SimpleXMLConverterFactory
一起使用。
我总是得到一个
ConstructorException: Parameter 'success' does not have a match in class ResponseInfo
我不知道出了什么问题。 xml非常简单,我只想要来自success
节点的字符串。
的xml:
<?xml version="1.0" encoding="UTF-8"?>
<response>
<success>LoremIpsum</success>
</response>
ResponseInfo:
@Root(strict = false, name = "response")
data class ResponseInfo(@Element(required = false, name = "success) var success: String)
编辑1:我测试了Api调用并返回给定的xml。
由于
答案 0 :(得分:9)
最后,我成功解决了这个问题。
问题是ResponseInfo
类。我把它改成
@Root(strict = false, name="response)
data class ResponseInfo @JvmOverloads constructor(
@field:element(name = "success") var success: String = ""
)
一切正常。
您需要有一个空构造函数,所有属性都必须是可变的(var
),并且您必须在field:
- 注释前面附加@Element
。 @JvmOverloads
结合默认值将为您创建空构造函数以及所有其他构造函数变体。
答案 1 :(得分:4)
如果你想避免使用deafult构造函数,你必须同时使用field
和param
use-site target。它看起来像这样:
@Root(strict = false, name = "response")
data class ResponseInfo(
@field:Element(name = "success") @param:Element(name = "success") var success: String
)
如this comment所述,似乎没有任何方法可以合并两个使用网站目标。