Ошибка 400, неправильный запрос, Json Ошибка разбора: нераспознанный токен «агама»: ожидалось («истина», «ложь» или «ноль») в Android Модернизация с помощью Spring Boot - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть такой вид JSON: EDITED

{
 "tgl_Lahir": "1960-12-18 00:00:00",
 "nama": "Rahmi P",
 "keterangan": "HIDUP",
 "tempatLahir": "YOGYAKARTA",
 "noPegawai": "010713",
 "golDarah": "0",
 "statusNikah": "0",
  "hubungans": {
            "id": "10"
         },
 "agama": {
            "id_Agama": "1"
          },

 "jeniskelamin": {
            "jenisKelamin": "1"
        }
}

У меня есть этот класс интерфейса:

    @FormUrlEncoded
    @POST("http://ipaddress/family/add")
    Call<familylistresponse> addFams(@Header("Content-Type") String content_type,
                                     @Header("Authorization") String auth,
                                     @Query("id") String id,
//                                     @Field("noPegawai") JSONObject noPegawai,
                                     @Field("agama") JSONObject agama,
                                     @Field("hubungans") JSONObject hubungans,
                                     @Field("jeniskelamin") JSONObject jeniskelamin,
                                     @Field("tgl_Lahir") JSONObject tgl_lahir,
                                     @Field("nama") JSONObject nama,
                                     @Field("keterangan") JSONObject keterangan,
                                     @Field("tempatLahir") JSONObject tempatLahir,
                                     @Field("golDarah") JSONObject goldar,
                                     @Field("statusNikah") JSONObject statusNikah);

Я хочу сохранить свои данные в сервер базы данных, поэтому я добавляю этот метод в мой button.setOnClickListener:

public void addFamily(String noPegawai, String agama, String hubungan, String jenisKelamins, String tgl_Lahir, String nama, String keterangan, String tempatLahir, String golDarah, String statusNikah){
        String id=null;
        SharedPreferences preferences = getSharedPreferences("MyPref",0);
        String tokens = preferences.getString("userToken",null);
        try {
            jsonObject.put("noPegawai", noPegawai);
            jsonObject.put("agama", agama);
            jsonObject.put("hubungans", hubungan);
            jsonObject.put("jeniskelamin", jenisKelamins);
            jsonObject.put("tgl_Lahir", tgl_Lahir);
            jsonObject.put("nama", nama);
            jsonObject.put("keterangan", keterangan);
            jsonObject.put("tempatLahir", tempatLahir);
            jsonObject.put("golDarah", golDarah);
            jsonObject.put("statusNikah", statusNikah);
        } catch (JSONException e) {
            e.printStackTrace();
        }
        Call<familylistresponse> call = apiService.addFams("application/json","Bearer " + tokens , id, jsonObject, jsonObject, jsonObject, jsonObject , jsonObject, jsonObject, jsonObject, jsonObject, jsonObject);
        call.enqueue(new Callback<familylistresponse>() {
            @Override
            public void onResponse(Call<familylistresponse> call, Response<familylistresponse> response) {
                try {
                    if(response.body()!=null)
                        Toast.makeText(TambahDataKeluarga.this," response message success "+response.body(),Toast.LENGTH_LONG).show();
                    if(response.errorBody()!=null)
                        Toast.makeText(TambahDataKeluarga.this," response message error "+response.errorBody().string(),Toast.LENGTH_LONG).show();

                    Log.e("ERROR: ", response.errorBody().string());
                }catch (Exception e){
                    e.printStackTrace();
                }

                Toast.makeText(TambahDataKeluarga.this," Tokens "+tokens,Toast.LENGTH_LONG).show();

            }

            @Override
            public void onFailure(Call<familylistresponse> call, Throwable t) {
                Log.e("ERROR: ", t.getMessage());
            }
        });
    }

, но когда я пытаюсь отправить его на сервер, он показывает мне эту ошибку enter image description here

Есть идеи? или это из-за моего вложенного сына? или класс моего интерфейса? Спасибо

Ответы [ 4 ]

0 голосов
/ 26 апреля 2020

Я РЕШЕН ПРОБЛЕМА ! Я не знаю, станет ли это решением для будущих читателей или нет. Но, по крайней мере, это немного поможет.

1. Интерфейсный класс : я просто изменяю формат формы на тип @Body, я думаю, что мне действительно легче вставлять данные, вам просто нужно отсортировать значение типа ввода по порядку, чтобы оно автоматически вставлялось на ваш сервер Формат ввода API.

 @Headers({ "Content-Type: application/json;charset=UTF-8"})
        @POST("http://ipaddress/family/add/")
        Call<familylistresponse> addFams(@Header("Authorization") String auth,
                                         @Body familylistresponse familybody);

2. Вложенные объекты : Итак, раньше я пробовал некоторые решения, которые вы, ребята, дали мне в эти дни, и спасибо вам за это. Но то, что я сделал, чтобы решить мою проблему, было другим. Итак, как вы можете видеть, у меня есть вложенные объекты на агамах, хубунганах и дженискеламинах. Что я сделал? Это просто, вроде этого (назовите свой «GSON Generate Class»), например:

Agama agamas = new Agama();
agamas.setIdAgama(vAgama);
Jeniskelamin jks = new Jeniskelamin();
jks.setJenisKelamin(vJenisk);
Hubungans hubungans = new Hubungans();
hubungans.setId(vHub);

После этого вам просто нужно добавить эти переменные в ваш класс основной модели в вашем Activity:

familylistresponse f = new familylistresponse();
  f.setTglLahir(name);
  f.setAgama(agamas);
  f.setHubungan(hubungans);
  etc....

И БУМ! Вот и все ~ Это еще один СОВЕТ: убедитесь, что ваши переменные в клиентском приложении совпадают с установленными на сервере базы данных! : D Ur Welcome ~~ Пожалуйста, проголосуйте за этот ответ, если считаете, что он полезен!

0 голосов
/ 23 апреля 2020

установите ваше значение следующим образом.

 JSONObject jobj = new JSONObject();
    try {
      jobj.put("id_Agama", "1");
    } catch (JSONException e) {
      e.printStackTrace();
    }

передайте ваш запрос следующим образом.

@Field("agama") JSONObject jobj,
0 голосов
/ 23 апреля 2020

класс интерфейса:

  @FormUrlEncoded
    @POST("http://103.82.240.144:1111/WSHRIS/pegawai/family/add")
    Call<familylistresponse> addFams(@Header("Content-Type") String content_type,
                                     @Header("Authorization") String auth,
                                     @Query("id") String id,
                                     @Field("noPegawai") boolean noPegawai,
                                     @Field("agama") JSONObject  agama,
                                     @Field("hubungans") JSONObject hubungans,
                                     @Field("jeniskelamin") JSONObject jeniskelamin,
                                     @Field("tgl_Lahir") String tgl_lahir,
                                     @Field("nama") String nama,
                                     @Field("keterangan") String keterangan,
                                     @Field("tempatLahir") String tempatLahir,
                                     @Field("golDarah") String goldar,
                                     @Field("statusNikah") String statusNikah);

Передача в аргументе JSON объект в аргументе

    public void addFamily(String noPegawai, String agama, String hubungan, String jenisKelamins, String tgl_Lahir, String nama, String keterangan, String tempatLahir, String golDarah, String statusNikah){
            String id=null;
            SharedPreferences preferences = getSharedPreferences("MyPref",0);
            String tokens = preferences.getString("userToken",null);

 JSONObject agamajsonObject= new JSONObject();
 JSONObject hubungansjsonObject= new JSONObject();
 JSONObject jeniskelaminjsonObject= new JSONObject();

        try {
          agamajsonObject.put("id_Agama", "1");
          hubungansjsonObject.put("id", "10");
          jeniskelaminjsonObject.put("jenisKelamin", "1");
        } catch (JSONException e) {
          e.printStackTrace();
        }

            Call<familylistresponse> call = apiService.addFams("application/json","Bearer " + tokens , id, true, agamajsonObject, hubungansjsonObject, jeniskelaminjsonObject, tgl_Lahir, nama, keterangan, tempatLahir, golDarah,statusNikah);
            call.enqueue(new Callback<familylistresponse>() {
                @Override
                public void onResponse(Call<familylistresponse> call, Response<familylistresponse> response) {
                    try {
                        if(response.body()!=null)
                            Toast.makeText(TambahDataKeluarga.this," response message success "+response.body(),Toast.LENGTH_LONG).show();
                        if(response.errorBody()!=null)
                            Toast.makeText(TambahDataKeluarga.this," response message error "+response.errorBody().string(),Toast.LENGTH_LONG).show();

                        Log.e("ERROR: ", response.errorBody().string());
                    }catch (Exception e){
                        e.printStackTrace();
                    }

                    Toast.makeText(TambahDataKeluarga.this," Tokens "+tokens,Toast.LENGTH_LONG).show();

                }

                @Override
                public void onFailure(Call<familylistresponse> call, Throwable t) {
                    Log.e("ERROR: ", t.getMessage());
                }
            });
        }
0 голосов
/ 23 апреля 2020
"agama":
 {
    "id_Agama": "1"
 }

но агама это просто string, поэтому решите это так

"agama":"1"

...