Caused by: java.lang.IllegalArgumentException: Could not locate call adapter for rx.Observable<>错误

public class TRService {
    public static final String BASE_TRC_URL = "http://www.tuling123.com/openapi/";

    private static Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(BASE_TRC_URL)
            .addConverterFactory(GsonConverterFactory.create())
            .build();

    private TRService() {
    }

    public static TRApi createTRService() {
        return retrofit.create(TRApi.class);
    }
}


public interface TRApi {

    /**
     * 可以看到这里应该是post传递的参数。
     * @param key
     * @param info
     * @param userid
     * @return
     */
    @FormUrlEncoded
    @POST("api")
    Observable<TREntity> getTRResponse(@Field("key") String key, @Field("info") String info, @Field("userid") String userid);
}


调用的地方:

private void gainChat(String str) {
        service.getTRResponse(Contant.TRC_KEY, str, Contant.TRC_USER_ID)
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Action1<TREntity>() {
                    @Override
                    public void call(TREntity trEntity) {
                        if (trEntity != null) {
                            String str;
                            if (trEntity.getCode() == 40004) {
                                str = Contant.TRC_ROBOT_REST;
                            } else {
                                str = trEntity.getText();
                            }
                            addData(new ChatBean(TRClientAdapter.TYPE_ROBOT, str));
                        }
                    }
                }, new Action1<Throwable>() {
                    @Override
                    public void call(Throwable throwable) {
                        addData(new ChatBean(TRClientAdapter.TYPE_ROBOT, Contant.TRC_ROBOT_FAILED));
                    }
                });
    }


出现如下错误:

Caused by: java.lang.IllegalArgumentException: Could not locate call adapter for rx.Observable<>

要在构建Retrofit时指定适配器模式为RxJavaCallAdapterFactory,修改如下:

public class TRService {
    public static final String BASE_TRC_URL = "http://www.tuling123.com/openapi/";

    private static Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(BASE_TRC_URL)
            .addConverterFactory(GsonConverterFactory.create())
            .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
            .build();

    private TRService() {
    }

    public static TRApi createTRService() {
        return retrofit.create(TRApi.class);
    }
}



如果没有使用RxJavaCallAdapterFractory,那么使用Retrofit的回调,如下:

public interface TRApi {

    /**
     * 可以看到这里应该是post传递的参数。
     * @param key
     * @param info
     * @param userid
     * @return
     */
    @FormUrlEncoded
    @POST("api")
    Call<TREntity> getTRResponse(@Field("key") String key, @Field("info") String info, @Field("userid") String userid);
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值