Ho visto molte volte questa domanda e ho provato molte soluzioni ma senza risolvere il mio problema, sto provando a inviare un json in una richiesta POST usando il retrofit, non sono un esperto in programmazione in modo da poter perdere qualcosa di ovvio.Invio JSON in richiesta POST con retrofit
mio JSON è in una stringa e si presenta così:
{"id":1,"nom":"Hydrogène","slug":"hydrogene"}
mia interfaccia (chiamato APIService.java) si presenta così:
@POST("{TableName}/{ID}/update/0.0")
Call<String> cl_updateData(@Path("TableName") String TableName, @Path("ID") String ID);
E il mio ClientServiceGenerator.java assomiglia a quello:
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)
.addConverterFactory(GsonConverterFactory.create());
Retrofit retrofit = builder.client(httpClient).build();
return retrofit.create(serviceClass);
}}
E infine ecco il codice nella mia attività
APIService client = ClientServiceGenerator.createService(APIService.class, "http://mysiteexample.com/api.php/");
Call<String> call = client.cl_updateData("atomes", "1");
call.enqueue(new Callback<String>() {
@Override
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());
}
}
@Override
public void onFailure(Throwable t) {
AlertDialog alertError = QuickToolsBox.simpleAlert(EditDataActivity.this, "updateFail", t.getMessage(), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
alertError.show();
}
});
Dimmi se hai bisogno di qualsiasi altra cosa, spero che qualcuno mi potrebbe aiutare.
EDIT non ne ha parlato prima volta, ma il mio JSON non saranno sempre con le stesse chiavi (id, nom, slug).
Ho visto questo post, ma sembra che alcuni animali sono stati rimossi e tutto ciò che provarono fallito così vengo qui per trovare un'altra soluzione . – Teasel