我只是在做一个GET请求,但是我收到了这个错误:
java.lang.RuntimeException:无法启动活动ComponentInfo {com.example.yomac_000.chargingpoint/com.example.yomac_000.chargingpoint.AllStores}:java.lang.IllegalArgumentException:无法为java.util.List创建转换器
这是因为这行代码:
Call> call = subpriseAPI.listStores(response);
所以我试过这行代码来看看它是什么类型的:
System.out.println(subpriseAPI.listStores(response).getClass().toString());
但后来我得到了同样的错误,所以它不会让我知道它是什么类型.在下面你可以看到我的代码.
StoreService.java:
public class StoreService { public static final String BASE_URL = "http://getairport.com/subprise/"; Retrofit retrofit = new Retrofit.Builder() .baseUrl(BASE_URL) .build(); SubpriseAPI subpriseAPI = retrofit.create(SubpriseAPI.class); String response = ""; public ListgetSubprises() { Call > call = subpriseAPI.listStores(response); try { List
listStores = call.execute().body(); System.out.println("liststore "+ listStores.iterator().next()); return listStores; } catch (IOException e) { // handle errors } return null; } }
SubpriseAPI.java:
public interface SubpriseAPI { @GET("api/locations/get") Call> listStores(@Path("store") String store); }
Store.java:
public class Store { String name; }
我正在使用Retrofit版本2.0.0-beta2.
在2+版本中,您需要通知转换器
转换器
默认情况下,Retrofit只能将HTTP主体反序列化为OkHttp的ResponseBody类型,并且它只能接受@Body的RequestBody类型.
可以添加转换器以支持其他类型.六个兄弟模块适应流行的序列化库,方便您使用.
Gson:com.squareup.retrofit:converter-gson Jackson:com.squareup.retrofit:converter-jackson
Moshi:com.squareup.retrofit:converter-moshi
Protobuf:com.squareup.retrofit:converter-protobuf
Wire:com.squareup.改造:converter-wire
简单XML:com.squareup.retrofit:converter-simplexml
// Square libs, consume Rest API compile 'com.squareup.retrofit:retrofit:2.0.0-beta1' compile 'com.squareup.okhttp:okhttp:2.4.0' compile 'com.squareup.retrofit:converter-gson:2.0.0-beta1'
所以,
String baseUrl = "" ; Retrofit client = new Retrofit.Builder() .baseUrl(baseUrl) .addConverterFactory(GsonConverterFactory.create()) .build();