cgr*_*cgr 5 integration android converter simple-framework retrofit
在为Android改造中集成Simple XML转换器时,我遇到了一些问题.
1).在build.gradle中添加"compile('com.squareup.retrofit:converter-simplexml:1.9.0')"后,我收到了编译错误.
错误报告:信息:Gradle任务[:app:assembleDebug]警告:调试将忽略依赖关系xpp3:xpp3:1.1.3.3,因为它可能与Android提供的内部版本冲突.如果出现问题,请使用jarjar重新打包以更改类包警告:依赖xpp3:xpp3:1.1.3.3因发布而被忽略,因为它可能与Android提供的内部版本冲突.如果有问题,请用jarjar重新打包以更改类包
2).我通过提供根类名称在http://pojo.sodhanalibrary.com/Convert的帮助下创建了Java Schemas .我继续为一个或另一个元素获取InstantiateException或ElementException,并且mazorly retrofit.converter.ConversionException:org.simpleframework.xml.core.ValueRequiredException:无法满足@ org.simpleframework.xml.Element(data = false,name = description字段"description"上的,required = true,type = void).许多字段的错误相同.
cgr*_*cgr 12
问题1).
我不得不在build.gradle中添加以下内容.由于这些软件包已经附带Android,因此存在问题.
compile ('com.squareup.retrofit:converter-simplexml:1.9.0') {
exclude group: 'xpp3', module: 'xpp3'
exclude group: 'stax', module: 'stax-api'
exclude group: 'stax', module: 'stax'
}
Run Code Online (Sandbox Code Playgroud)
问题2).
我必须拥有Java类层次结构,该层次结构应该以XML中的第一个元素开头.我把"Rss"作为我XML中的第一个元素.虽然我使用http://pojo.sodhanalibrary.com/Convert生成了模式,但我给自己命名了类似"警告"的东西,它为所有必需的元素生成了类.而Warnings.java有"Rss"实例成员.我没有通过Rss,而是通过了警告来改造.Callback.
Class Warnings {
private Rss rss;
.....
.....
}
Class Rss {
private Channel channel;
.....
.....
}
Run Code Online (Sandbox Code Playgroud)
它可以在某种程度上找到类的层次结构,但它开始为所有类的每个字段提供有问题的错误/异常,尽管它们似乎可用.
经过相当长的一段时间来解决这些错误之后,我将已经传递给retrofit.Callback的响应类从Warnings更改为Rss并且这样做有效.
XML:
<rss version="2.0">
<channel>...</channel>
</rss>
Run Code Online (Sandbox Code Playgroud)
这是我的改造请求代码,包含错误:
retrofitService.getWarnings(lat, lon, authKey, new Callback<Warnings>() {
@Override
public void success(WarningsResponse warningsResponse, Response response) {
// handle success response..
}
@Override
public void failure(RetrofitError error) {
// handle error response
}
});
Run Code Online (Sandbox Code Playgroud)
工作代码:
retrofitService.getWarnings(lat, lon, authKey, new Callback<Rss>() {
@Override
public void success(WarningsResponse warningsResponse, Response response) {
// handle success response..
}
@Override
public void failure(RetrofitError error) {
// handle error response
}
});
Run Code Online (Sandbox Code Playgroud)
唯一的差异是传递给回调的类.
因此,使用XML中的根元素的类名传递给Callback,这样XML到Java对象的转换就很容易成功.
您可以在XML集成到Retrofit帮助站点中找到此讨论:https:
//futurestud.io/blog/retrofit-how-to-integrate-xml-converter/
| 归档时间: |
|
| 查看次数: |
2321 次 |
| 最近记录: |