首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓+ Retrofit2

安卓+ Retrofit2
EN

Stack Overflow用户
提问于 2018-07-03 19:53:50
回答 2查看 73关注 0票数 0

我有一个服务,它返回Single>

@GET("users/me/favourite-items-by-shop") fun getFavourites(@Header("Authorization") authorization: String?): Single<List<FavouriteItemResponse>>

并且我有一个存储库,我想在其中获取列表

代码语言:javascript
复制
override fun getItems(): Single<List<ItemResponse>> {
    return service.getFavourites(token)
            .map(FavouriteItemResponse::items)
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
}

但我弄错了

代码语言:javascript
复制
required:Function<in List<FavouriteItemResponse>!, out (???..???)>!
Found: KProperty1<FavouriteItemResponse, ShopResponse>

我怎么才能修复它?

EN

回答 2

Stack Overflow用户

发布于 2018-07-03 19:57:50

尝试此代码以错误的方式定义头文件..

代码语言:javascript
复制
    @Headers("Content-Type:application/json")
@POST(NetworkConstants.WS_SEND_MESSAGE)
Call<MessageResponse> sendMessage(@Body UserData data);

你还需要在所有api请求中定义token,然后将其添加到改进对象定义时间中。

代码语言:javascript
复制
    private Retrofit getClient(final Context context) {

    HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
    interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
    OkHttpClient.Builder client = new OkHttpClient.Builder();
    client.readTimeout(60, TimeUnit.SECONDS);
    client.writeTimeout(60, TimeUnit.SECONDS);
    client.connectTimeout(60, TimeUnit.SECONDS);
    client.addInterceptor(interceptor);
    client.addInterceptor(new Interceptor() {
        @Override
        public Response intercept(Chain chain) throws IOException {
            Request request = chain.request();
            if (context == null) {
                request = request
                        .newBuilder()
                        .build();
            } else {
                request = request
                        .newBuilder()
                        .addHeader("Authorization", "Bearer " + AppSetting.getStringSharedPref(context, Constants.USER_KEY_TOKEN, ""))
                        .build();
            }
            return chain.proceed(request);
        }
    });

    retrofit = new Retrofit.Builder()
            .baseUrl(BASE_URL)
            .client(client.build())
            .addConverterFactory(GsonConverterFactory.create())
            .build();


    return retrofit;
}

但是java中的代码

票数 1
EN

Stack Overflow用户

发布于 2018-07-03 22:44:19

我可以把它修好

代码语言:javascript
复制
return service.getFavourites(token)
                     .map { it[0] }
                     .map { it.items }
                     .subscribeOn(Schedulers.io())
                     .observeOn(AndroidSchedulers.mainThread())
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51153966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档