我使用retrofit2进行网络调用,使用retrofit2 converter-simplexml作为解析XML的转换器。 有新闻网站:http://www.cbc.ca/cmlink/rss-topstories/和RSS提要。无法修复错误。
java.lang.IllegalArgumentException: Unable to create converter for java.util.List<com.ku4irka.rss_nfr.model.entity.Channel>
for method ChannelService.getChannel
at retrofit2.ServiceMethod$Builder.methodError(ServiceMethod.java:720)
at retrofit2.ServiceMethod$Builder.createResponseConverter(ServiceMethod.java:706)
at retrofit2.ServiceMethod$Builder.build(ServiceMethod.java:167)
at retrofit2.Retrofit.loadServiceMethod(Retrofit.java:166)
at retrofit2.Retrofit$1.invoke(Retrofit.java:145)
at java.lang.reflect.Proxy.invoke(Proxy.java:397)
at $Proxy0.getChannel(Unknown Source)
at com.ku4irka.rss_nfr.view.activity.ListNewsActivity.configRest(ListNewsActivity.java:48)
at com.ku4irka.rss_nfr.view.activity.ListNewsActivity.onCreate(ListNewsActivity.java:36)
at android.app.Activity.performCreate(Activity.java:5958)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1129)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2364)
... 10 more
Caused by: java.lang.IllegalArgumentException: Could not locate ResponseBody converter for java.util.List<com.ku4irka.rss_nfr.model.entity.Channel>.
Tried:
* retrofit2.BuiltInConverters
* retrofit2.converter.simplexml.SimpleXmlConverterFactory
at retrofit2.Retrofit.nextResponseBodyConverter(Retrofit.java:346)
at retrofit2.Retrofit.responseBodyConverter(Retrofit.java:308)
at retrofit2.ServiceMethod$Builder.createResponseConverter(ServiceMethod.java:704)
... 20 more
示例代码:
RestManager:
public class RestManager {
private static final OkHttpClient CLIENT = new OkHttpClient();
private static Retrofit retrofit;
private static ChannelService sChannelService;
private static void retrofitSetup() {
// Retrofit setup
retrofit = new Retrofit.Builder()
.baseUrl(Constans.HTTP.BASE_URL)
.addConverterFactory(SimpleXmlConverterFactory.create())
.client(CLIENT)
.build();
}
public static ChannelService getChannelService() {
if (sChannelService == null) {
retrofitSetup();
// Service setup
sChannelService = retrofit.create(ChannelService.class);
}
return sChannelService;
}
}
服务:
public interface ChannelService {
@GET("cmlink/rss-topstories/")
Call<List<Channel>> getChannel();
}
班级频道:
@Root(name = "channel")
public class Channel {
@Element(name = "guid")
private double id;
@Element(name = "title")
private String title;
@Element(name = "pubDate")
private String pubDate;
@Element(name = "author")
private String author;
@Element(name = "description")
private String description;
@Element(name = "link")
private String link;
public Channel() {
}
方法:
private void configRest() {
Call<List<Channel>> call = mRestManager.getChannelService().getChannel();
call.enqueue(new Callback<List<Channel>>() {
@Override
public void onResponse(Call<List<Channel>> call, Response<List<Channel>> response) {
if (response.isSuccessful()) {
mNewsList = response.body();
setRecyclerView();
}
}
@Override
public void onFailure(Call<List<Channel>> call, Throwable t) {
//
}
});
}
摇篮:
configurations {
compile.exclude group: 'stax'
compile.exclude group: 'xpp3'
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:24.1.1'
compile 'com.android.support:design:24.1.1'
compile 'com.android.support:recyclerview-v7:24.1.1'
compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.squareup.retrofit2:converter-simplexml:2.1.0'
compile 'com.squareup.picasso:picasso:2.5.2'
compile 'com.squareup.okhttp3:okhttp:3.3.1'
compile 'org.simpleframework:simple-xml:2.7.1'
}
请告诉我这是什么问题?