通常情况下,后台服务器返回的数据都是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

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

1289

被折叠的 条评论
为什么被折叠?



