【发布时间】:2015-09-21 01:13:24
【问题描述】:
我正在尝试为 Android 编写一个简单的 RSS 阅读器应用程序。我正在使用 Retrofit 与 SimpleXMLConverter 进行网络通信,以从 XML 填充 POJO。这是我的 REST API:
package ru.unatco.rss.data;
import java.util.List;
import retrofit.Callback;
import retrofit.http.GET;
public interface RssAdapter {
@GET("/radio-t")
void getItems(Callback<RadioTItems> callback);
}
这是调用 API 的代码:
RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint("http://feeds.rucast.net")
.setConverter(new SimpleXMLConverter())
.build();
RssAdapter rssAdapter = restAdapter.create(RssAdapter.class);
rssAdapter.getItems(new Callback<RadioTItems>() {
@Override
public void success(RadioTItems radioTItems, Response response) {
System.out.println(radioTItems.toString());
}
@Override
public void failure(RetrofitError error) {
System.out.println(error);
}
});
这些是我想要获得的 POJO:
package ru.unatco.rss.data;
import org.simpleframework.xml.ElementList;
import org.simpleframework.xml.Root;
import java.util.List;
@Root(name = "rss", strict = false)
public class RadioTItems {
@ElementList(required = false, name = "channel")
List<RadioTItem> items;
}
package ru.unatco.rss.data;
import org.simpleframework.xml.Element;
import org.simpleframework.xml.Root;
@Root(name = "item", strict = false)
public class RadioTItem {
@Element(name = "title")
String mTitle;
@Element(name = "description")
String mDescription;
public RadioTItem() {}
}
RSS 的来源是here。 现在,当我尝试执行请求时,我得到了这个异常:
retrofit.RetrofitError: org.simpleframework.xml.core.ValueRequiredException: Unable to satisfy @org.simpleframework.xml.Element(data=false, name=description, required=true, type=void) on field 'mDescription' java.lang.String ru.unatco.rss.data.RadioTItem.mDescription for class ru.unatco.rss.data.RadioTItem at line 2
如果我在 RadioTItem @Element(required = false) 中设置 mDescription 和 mTitle 字段,则解析完成,但两个字段均为空。
任何想法如何摆脱这个问题?
【问题讨论】: