2017-06-30 61 views
0

您好我正在使用API​​,當會話令牌無效時返回登錄頁面/如果會話有效,則返回JSON響應。我怎樣才能用Retrofit來實現這個,即有多種響應類型?如果響應可以是JSon/HTML,我如何通過Retrofit 2解析響應?

P.S這是一箇舊的API,它不能改變。我是新來的改裝,我會非常感謝你的幫助。

+0

登錄如何在您的應用中工作?登錄憑據的來源是什麼?有沒有可用於檢查會話令牌是否有效的服務? –

回答

0

會後本作評論,因爲它更是一個建議,那麼實際的答案,但這裏有雲:

(如果你是完全新的改造發表評論來解釋比較詳細)

你可以使你的調用返回一個響應,像這樣:

@GET("login/endpoint") 
Call<Response> getLogin(); 

比你可以作出這樣

Call<Response> getLogin = ApiService.getLogin(); 
getLogin.enqueue(new Callback<Void>() { 
     @Override 
     public void onResponse(Call<Response> call, Response<Response> response) { 
      //here you can access Response.body() and use it to determine wether it's json or html and react accordingly 
     } 

     @Override 
     public void onFailure(Call<Response> call, Throwable t) { 
      //todo: error message 
     } 
    }); 
通話

注意:我使用的響應來自OkHttp庫。

如果這不起作用,您可以嘗試製作自己的轉換器,該轉換器檢查html/json並將其添加到改造實例的創建中。我不完全確定你可以怎麼做,但這似乎有一個總體思路:來自futurestudio的custom converter

如果您需要更多指導/澄清,請讓我知道我今天晚些時候可以回答。