2016-08-31 131 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

我認爲這是因爲標量不能工作與呼叫包梁