2016-08-31 87 views
1

我有以下标量转换器工厂第一次和gson转换器后,但当我调用一个字符串调用和响应来一个字符串它给了我的豁免“一个JSON对象: “成功”Retrofit2标量转换器不转换之前gson转换器android

我缺少什么

改造创造:

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(); 

效应初探身体是 “成功”。

+0

我们需要有一些'喜欢的响应jsonkey'应该是'{“responsemessage “:” 成功“}'。这就是为什么它会抛出异常 – Soham

+0

你可以发布响应,因为它是在日志或邮递员? –

回答

0

我认为这是不可能使用Gson和Scalar。 Retrofit无法识别它是纯字符串响应还是json字符串响应。

我的方法是只使用标量转换器,到处都返回String,然后使用Gson手动将其转换为流。

下面的例子在科特林与RxJava

@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) 
       } 
0

我认为这是因为标量不能工作与呼叫包梁