Je veux obtenir une chaîne json de mon api en utilisant retrofit 2, je n'ai pas de problème en utilisant retrofit 1 pour obtenir ce json, mais en utilisant retrofit 2, j'obtiens nul pour moi.
Voici à quoi ressemble mon json
{"id":1,"Username":"admin","Level":"Administrator"}
Voici mon API
@FormUrlEncoded
@POST("/api/level")
Call<ResponseBody> checkLevel(@Field("id") int id);
Voici à quoi ressemble mon code
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(Config.BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
Api api = retrofit.create(Api.class);
Call<ResponseBody> call = api.checkLevel(1);
call.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
JsonObject post = new JsonObject().get(response.body().toString()).getAsJsonObject();
if (post.get("Level").getAsString().contains("Administrator")) {
}
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
}
});
Je suis nouveau dans retrofit 2 et en utilisant le code ci-dessus, cela fait toujours planter mes applications car response.body().toString()
renvoie un résultat nul.
Merci de m'indiquer comment récupérer cette chaîne json afin de la convertir en JsonObject.
0 votes
Jeter un coup d'œil stackoverflow.com/questions/21398598/
0 votes
Vous ne pouvez accéder à response.body.string() qu'une seule fois, après quoi il renverra null.
0 votes
Response.body().toString() Je l'ai changé en try{ String result = response.body().string() ; }catch(Exception e){ e.printStackTrace() ; } Cela a fonctionné pour moi !