无法为retrofit.Call <java.util.list <model.object>&gt;创建调用适配器

时间:2016-10-05 14:48:30

标签: android retrofit2

我的请求未能拨打电话

Retrofit retrofit = new Retrofit.Builder()
        .baseUrl(MyAPI.BASE_URL)
        .addConverterFactory(JacksonConverterFactory.create())
        .build();

// prepare call in Retrofit 2.0
MyAPI myAPI = retrofit.create(MyAPI.class);

**// Debug fails here on line below**
Call<List<Place>> call = myAPI.loadPlaces(3, "restaurant");

我的界面

//  Base search url, trailing slash needed
String BASE_URL = "https://test.domain.com/";

@GET("place/search")
Call<List<Place>> loadPlaces(
        @Query("count") int amountOfResults,
        @Query("filter_category") String category);

不幸的是this question没有帮助,而大多数搜索结果都是使用Gson和RxJava

有没有办法在不使用电话的情况下获得结果?

1 个答案:

答案 0 :(得分:0)

您可以使用rxJava库,因为您必须在Retrofit实例创建期间使用特定的调用适配器工厂:.addCallAdapterFactory(RxJavaCallAdapterFactory.create())。 此方法的优点是您可以在后台轻松处理请求并收到有关错误的通知。

Observable<List<Place>> pendingResult = myApi.getPlaces();
pendingResult.subscribeOn(Schedulers.io)
.map(places -> {
    // pre- process places somehow
})
.subscribe(places -> {
// process result
}, error -> {
// handle error
}}

请参阅本教程:https://medium.freecodecamp.com/rxandroid-and-retrofit-2-0-66dc52725fff#.5h0ecp5dg