Retrofit2标量转换器不转换之前gson转换器android
我在Android中使用标量转换器工厂以及gson转换器之后进行了以下改进,但是当我调用字符串调用时,响应以字符串的形式出现,它给了我“不是JSON对象:”成功的例外。
我错过了什么?
改造创造:
Retrofit retrofit = new Retrofit.Builder() .addConverterFactory(ScalarsConverterFactory.create()) .addConverterFactory(GsonConverterFactory.create(gson)) .baseUrl(IPService.END) .client(new OkHttpClient.Builder().build()) .build();
创建电话:
@POST("/friends/sendRequest") Call<String> sendFriendRequest(...);
呼叫执行:
Response<String> a = myApi.sendFriendRequest(...).execute();
反应的身体是“成功”。
我认为这是不可能使用Gson和Scalar。 Retrofit无法识别它是纯字符串响应还是json字符串响应。
我的方法是只使用标量转换器,到处都返回String,然后使用Gson手动将其转换为流。
在RtJava下面的Kotlin例子
@GET("{path}") fun getVersion(@Path("path") hash: String): Single<String> api.getVersion() .map { val gson = GsonBuilder() .setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'") .create() gson.fromJson(it, VersionResponse::class.java) }
我认为这是因为Scalar无法使用Call来封装