Я много раз встречал эти вопросы и пытался много решений, но не решая проблемы, я пытаюсь отправить json в запрос POST с помощью модификации, я не специалист по программированию, поэтому я могу пропустить что-то очевидное.
Мой JSON находится в строке и выглядит так:
{"id":1,"nom":"Hydrogène","slug":"hydrogene"}
Мой интерфейс (называемый APIService.java) выглядит следующим образом:
@POST("{TableName}/{ID}/update/0.0")
Call<String> cl_updateData(@Path("TableName") String TableName, @Path("ID") String ID);
И мой ClientServiceGenerator.java выглядит следующим образом:
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);
}}
И, наконец, вот код в моей деятельности
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();
}
});
Скажите мне, если вам нужно что-нибудь еще, надеюсь кто-то может мне помочь.
ИЗМЕНИТЬ Не упоминал об этом в первый раз, но мой JSON не всегда будет с теми же клавишами (id, nom, slug).