关于retrofit2网络请求报错Unable to create converter for class问题

遇到一个网络请求报错Unable to create converter for class 的问题自我分析

首先先上我的网络请求的代码 代码说话
这是请求方法

public void getToken(String deviceCode, String timestamp, String system, String md5, final BeanCallback<TokenBean> callback ){
        Call<TokenBean> goodsDetail = getStringRetrofit().create(RegisterServer.class).obtainToken(deviceCode, timestamp, system, md5);
        goodsDetail.enqueue(new Callback<TokenBean>() {
            @Override
            public void onResponse(@NonNull Call<TokenBean> call, @NonNull Response<TokenBean> response) {
                LogUtils.e(""+response.code());
                if (response.code() == 200) {
                    callback.onSuccess(response.body());
                }else {
                    callback.onError(response.message());
                }
            }

            @Override
            public void onFailure(@NonNull Call<TokenBean> call, @NonNull Throwable t) {
                callback.onError(t.toString());
            }
        });
    }

这是接口

    @POST(Api.TOKEN_URL)
    @FormUrlEncoded
    Call<TokenBean> obtainToken(@Field("device_code") String deviceCode,
                                @Field("timestamp") String timestamp,
                                @Field("system") String system,
                                @Field("md5") String md5);

乍一看 没有问题啊 是这样啊 但是 就是这种请求方式会报Unable to create converter for class错误 而且你自己直接拼接接口去请求又是能拿到数据的这样就很尴尬 仔细检查了一波发现了错误
错误请看这里

 Call<TokenBean> goodsDetail = getStringRetrofit().create(RegisterServer.class).obtainToken(deviceCode, timestamp, system, md5);

请注意 getStringRetrofit() 没错就是它引起的错误
因为 你前面接口和请求类型里面已经定义为了一个bean文件的类型 也就是你请求下来的数据已经不是string类型 是一个gson类型而你这时候去以getStringRetrofit()去请求 导致两种数据冲突 无法转换 导致报错

正确的写法应该是

 Call<TokenBean> goodsDetail = getGsonRetrofit().create(RegisterServer.class).obtainToken(deviceCode, timestamp, system, md5);

直接以getGsonRetrofit()去请求他 数据类型匹配上了就完OK了 这是一个小坑 下次遇到这种问题先检查自己的请求看下是不是类型请求错误了

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值