2017-08-12 54 views
0

我是retrofit2的新手,我不知道如何在方法OnResponse上返回任何內容。 我有這些代碼:如何使用RetroFit2返回OnResponse中的任何數據

public boolean verificarUsuario (String login, String senha){ 

    Retrofit retrofit = new Retrofit.Builder().baseUrl(BASE_URL).addConverterFactory(GsonConverterFactory.create(g)).build(); 
    usuarioService service = retrofit.create(usuarioService.class); 
    retrofit2.Call<Boolean> user = service.verificarUsuario(login,senha); 
    user.enqueue(new Callback<Boolean>() { 

     @Override 
     public void onResponse(Call<Boolean> call, Response<Boolean> response) { 
      boolean result = response.body(); 



     } 

     @Override 
     public void onFailure(Call<Boolean> call, Throwable t) { 

     } 
    }); 
} 

,我需要返回可變結果時,我的方法atualizarUsuario被調用。

這裏我有我的方法verificarUsuario的接口:

@GET("get/usuarios/login/{login,senha}") 
Call<Boolean> verificarUsuario(@Path("login") String login, @Path("senha") String senha); 

在這裏,我有我的方法verificarUsuario的JSON:

@GET 
@Produces(MediaType.APPLICATION_JSON) 
@Path("/verificarUsuario/") 
public String verificarUsuario(@QueryParam("login")String login, @QueryParam("senha") String senha) { 

    usuarioDAO dao = new usuarioDAO(); 

    if(dao.verificarUsuario(login,senha)){ 
     return "true"; 
    }else{ 
     return "false"; 
    } 
} 

是否有人知道該怎麼辦呢?

+0

請發佈您的api調用返回的json。你已經設置你的響應類爲布爾值,不能在json中返回 –

+0

你有沒有檢查過[documentation](http://square.github.io/retrofit/)或[samples](https:// github .com/square/retrofit/tree/master/samples/src/main/java/com/example/retrofit)可以在Retrofit的倉庫中找到嗎? – tommus

+0

@tommus是的,但我不明白如何返回任何東西。 –

回答

0

Retrofit提供兩種類型的調用,即異步調用和同步調用。異步調用由enqueue(這是您調用的方法)觸發,並讓您傳遞Callback對象來告訴它在調用完成後應該發生什麼。如果您希望調用方法等待響應返回,然後基於此返回某些內容,則需要使用同步方法,即execute。但是,您不能在Android的UI線程上調用execute,因此如果主線程發生這種情況,您需要使verificarUsuario返回void,然後在您傳入的回調中觸發任何想要的結果。enqueue

+0

我明白,但是,我該如何做到這一點?你能給我舉一個例子,說明如何在回調中觸發結果入隊?請? –

+0

您的代碼是否在活動中運行?如果是,那麼你可以更新文本視圖或關閉進度條或開始另一個活動,或者這種性質的東西。回調讓你運行任何android代碼,只要響應回來 –

相關問題