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来封装