Retrofit2 上传加密后的String数据时 会多一个双引号

当使用Retrofit2以Content-type:application/json上传加密后的String数据时,会发现数据被包裹在双引号中,这是由于Retrofit没有内置String Converter且GsonConverterFactory将所有数据转化为json格式。解决方法包括:1) 添加converter-scalars库并在Gson之前使用;2) 自定义转换器。解决方案的具体实现和依赖添加说明在内容中详细阐述。

通常情况下,后台服务器返回的数据都是json格式,所以在我们使用Retrofit2 的时候会添加addConverterFactory(GsonConverterFactory.create()),来方便解析服务器返回的数据,

new Retrofit.Builder()
                .client(client)
                .baseUrl(url)
                .addConverterFactory(GsonConverterFactory.create(gson))
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .build();

然而,在我们以Content-type:application/json 来post String参数时,会发现(后台开发人员反馈)我们传过去的String会多附带一个双引号,导致的原因是:
1.retrofit没有内置String的Converter;
2.注册了GsonConverterFactory,而GsonConverterFactory是不会判断能不能处理该类型的,全部转成json,而String在json里就是"String"的形式(重点)

提供一种解决方案:
1.添加一个标准转换器 converter-scalars 在GsonConverterFactory之前 代码如下

 new Retrofit.Builder()
                .client(client)
                .baseUrl(url)
                .addConverterFactory(ScalarsConverterFactory.create())//添加的代码
                .addConverterFactory(GsonConverterFactory.create(gson))
                .add
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值