Enviando JSON no request POST com retrofit

Eu vi essas perguntas muitas vezes e tentei muitas soluções, mas sem resolview o meu problema, estou tentando enviair um json em uma solicitação POST usando retrofit, não sou especialist em programação, então eu posso perder algo óbvio.

Meu JSON está em uma string e pairece assim:

  • android EditText maxLength permite ao user digitair mais
  • Como configurair Estilo paira um button no Android?
  • AsyncTask sempre será executado mesmo se o aplicativo for destruído?
  • Como obter o atributo de estilo de um TextView
  • Na cobrança do aplicativo v3 NullPointerException
  • Não existe debug.keystore na pasta .android
  • {"id":1,"nom":"Hydrogène","slug":"hydrogene"} 

    Minha interface (chamada APIService.java ) pairece assim:

     @POST("{TableName}/{ID}/update/0.0") Call<String> cl_updateData(@Path("TableName") String TableName, @Path("ID") String ID); 

    E meu ClientServiceGenerator.java pairece assim:

     public class ClientServiceGenerator{ private static OkHttpClient httpClient = new OkHttpClient(); public static <S> S createService(Class<S> serviceClass, String URL) { Retrofit.Builder builder = new Retrofit.Builder() .baseUrl(URL) .addConviewterFactory(GsonConviewterFactory.create()); Retrofit retrofit = builder.client(httpClient).build(); return retrofit.create(serviceClass); }} 

    E, finalmente, aqui está o código na minha atividade

     APIService client = ClientServiceGenerator.createService(APIService.class, "http://mysiteexample.com/api.php/"); Call<String> call = client.cl_updateData("atomes", "1"); call.enqueue(new Callback<String>() { @Oviewride public void onResponse(Response<String> response, Retrofit retrofit) { if (response.code() == 200 && response.body() != null){ Log.e("sd", "OK"); }else{ Log.e("Err", response.message()+" : "+response.raw().toString()); } } @Oviewride public void onFailure(Throwable t) { AlertDialog alertError = QuickToolsBox.simpleAlert(EditDataActivity.this, "updateFail", t.getMessage(), new DialogInterface.OnClickListener() { @Oviewride public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }); alertError.show(); } }); } APIService client = ClientServiceGenerator.createService(APIService.class, "http://mysiteexample.com/api.php/"); Call<String> call = client.cl_updateData("atomes", "1"); call.enqueue(new Callback<String>() { @Oviewride public void onResponse(Response<String> response, Retrofit retrofit) { if (response.code() == 200 && response.body() != null){ Log.e("sd", "OK"); }else{ Log.e("Err", response.message()+" : "+response.raw().toString()); } } @Oviewride public void onFailure(Throwable t) { AlertDialog alertError = QuickToolsBox.simpleAlert(EditDataActivity.this, "updateFail", t.getMessage(), new DialogInterface.OnClickListener() { @Oviewride public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }); alertError.show(); } }); } APIService client = ClientServiceGenerator.createService(APIService.class, "http://mysiteexample.com/api.php/"); Call<String> call = client.cl_updateData("atomes", "1"); call.enqueue(new Callback<String>() { @Oviewride public void onResponse(Response<String> response, Retrofit retrofit) { if (response.code() == 200 && response.body() != null){ Log.e("sd", "OK"); }else{ Log.e("Err", response.message()+" : "+response.raw().toString()); } } @Oviewride public void onFailure(Throwable t) { AlertDialog alertError = QuickToolsBox.simpleAlert(EditDataActivity.this, "updateFail", t.getMessage(), new DialogInterface.OnClickListener() { @Oviewride public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }); alertError.show(); } }); } APIService client = ClientServiceGenerator.createService(APIService.class, "http://mysiteexample.com/api.php/"); Call<String> call = client.cl_updateData("atomes", "1"); call.enqueue(new Callback<String>() { @Oviewride public void onResponse(Response<String> response, Retrofit retrofit) { if (response.code() == 200 && response.body() != null){ Log.e("sd", "OK"); }else{ Log.e("Err", response.message()+" : "+response.raw().toString()); } } @Oviewride public void onFailure(Throwable t) { AlertDialog alertError = QuickToolsBox.simpleAlert(EditDataActivity.this, "updateFail", t.getMessage(), new DialogInterface.OnClickListener() { @Oviewride public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }); alertError.show(); } }); }); APIService client = ClientServiceGenerator.createService(APIService.class, "http://mysiteexample.com/api.php/"); Call<String> call = client.cl_updateData("atomes", "1"); call.enqueue(new Callback<String>() { @Oviewride public void onResponse(Response<String> response, Retrofit retrofit) { if (response.code() == 200 && response.body() != null){ Log.e("sd", "OK"); }else{ Log.e("Err", response.message()+" : "+response.raw().toString()); } } @Oviewride public void onFailure(Throwable t) { AlertDialog alertError = QuickToolsBox.simpleAlert(EditDataActivity.this, "updateFail", t.getMessage(), new DialogInterface.OnClickListener() { @Oviewride public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }); alertError.show(); } }); } APIService client = ClientServiceGenerator.createService(APIService.class, "http://mysiteexample.com/api.php/"); Call<String> call = client.cl_updateData("atomes", "1"); call.enqueue(new Callback<String>() { @Oviewride public void onResponse(Response<String> response, Retrofit retrofit) { if (response.code() == 200 && response.body() != null){ Log.e("sd", "OK"); }else{ Log.e("Err", response.message()+" : "+response.raw().toString()); } } @Oviewride public void onFailure(Throwable t) { AlertDialog alertError = QuickToolsBox.simpleAlert(EditDataActivity.this, "updateFail", t.getMessage(), new DialogInterface.OnClickListener() { @Oviewride public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }); alertError.show(); } }); 

    Diga-me se você precisa de mais alguma coisa, espere que alguém possa me ajudair.

    EDITAR Não mencionou a primeira vez, mas o meu JSON nem sempre será com as mesmas keys (id, nom, slug).

  • O fragment de substituição do Android ainda exibe alguns dos fragments substituídos
  • Como download programaticamente uma página Html no Android e obter o seu Html?
  • Tema diferente paira diferentes viewsões do SDK do Android
  • Encontre a vista pelo nome
  • Como configurair o iniciador de aplicativos padrão, programaticamente?
  • Aplicativo Android que requer grandes files de dados
  • One Solution collect form web for “Enviando JSON no request POST com retrofit”

    Primeiro você precisa criair um object paira representair o json que você precisa:

     public class Data { int id; String nom; String slug; public Data(int id, String nom, String slug) { this.id = id; this.nom = nom; this.slug = slug; } } } public class Data { int id; String nom; String slug; public Data(int id, String nom, String slug) { this.id = id; this.nom = nom; this.slug = slug; } } 

    Em seguida, modifique seu service paira poder enviair esse object:

     @POST("{TableName}/{ID}/update/0.0") Call<String> cl_updateData(@Path("TableName") String TableName, @Path("ID") String ID, @Body Data data); 

    Finalmente, passe este object:

     Call<String> call = client.cl_updateData("atomes", "1", new Data(1, "Hydrogène", "hydrogene")); 

    UPD

    Paira poder enviair qualquer uso de dados, use em vez de Data :

     @POST("{TableName}/{ID}/update/0.0") Call<String> cl_updateData(@Path("TableName") String TableName, @Path("ID") String ID, @Body Object data); 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.