Как отправить объект из Java, как объект Javascript? - PullRequest
0 голосов
/ 03 июля 2019

У меня есть приложение Angular 7, Android Mobile и Laravel.Я отправляю объект в Angular 7, который отлично работает на Laravel, это объект

{
  "mov_entry_id": 72507,
  "limitHour": "02/07/2019 13:40:27",
  "plate": null,
  "mov_vehicle_id": 1,
  "mov_vehicle_name": "Carro",
  "value": "8.00",
  "mov_area_id": 7,
  "mov_area_name": "AB",
  "mov_user_id": 1,
  "validated": "N",
  "updated_at": "02/07/2019 13:20:27",
  "mov_entry_ean13": "7800000725070",
  "created_at": "02/07/2019 13:20:27"
}

Я отправляю метод post из angular в laravel, это внутренняя часть, которая получает этот объект

           $entryObj = $request->input('entry');
           $userid = $request->input('userid');
           $hourValue = 0;
           $validatedDate;

           $response["success"] = 1;
           $response["message"] = "Entrada validada com blabla";
           $response['entryObj'] = $entryObj;
           $response['mov_entry_ean13'] = $entryObj["mov_entry_ean13"];
           return $response;

Я получаю объект в "$ request-> input ('entry');" в этой части, и я хочу получить доступ к объекту, подобному этому $ entryObj ["mov_entry_ean13"]; , когда я отправляю Angular 7 с Json, как я показываю вам, ребята, мое приложение Laravel получает доступ к объекту нормально, но моя проблема на Android.

Когда я использую Java в AndroidЯ пытался сделать объект похожим на javascript, но безуспешно, я пытаюсь JsonObject, JsonElement и Map, это мой Retrofit API:

@FormUrlEncoded
    @POST("/api/validateentrymobi")
    public Call<JsonObject> validateTicket(
            @Field("entry")  JsonObject entry,
            @Field("userid") String user_id
    );

Когда я использую, я получаю эту ошибку "Недопустимое смещение строки" mov_entry_ean13 "" , похоже, что-то не так с моим объектом, который я отправляю, это объект из Java

{"mov_entry_id":72507,"plate":null,"mov_vehicle_id":1,"mov_vehicle_name":"Carro","value":"8.00","mov_area_id":7,"mov_area_name":"AB","mov_user_id":1,"validated":"N","mov_entry_ean13":"7800000725070","created_at":"02/07/2019 13:20:27","updated_at":"02/07/2019 13:20:27","validated_date":"2019-07-02 13:40:27"}

Что я делаю не так?

1 Ответ

0 голосов
/ 03 июля 2019

Вам необходимо создать POJO и настроить конвертер json для использования Retrofit.

Модификация установки

Retrofit retrofit = new Retrofit.Builder()
        .addConverterFactory(GsonConverterFactory.create()) // this requires implementation 'com.squareup.retrofit2:converter-gson:2.5.0'
        .build()

Создание класса POJO с аннотацией Gson

// this will act as the top level json object {}
class MyBody {
    @SerializedName("mov_entry_id")
    int movEntryId;

    // write your fields here
}

Использовать POJO в качестве тела для запроса на модернизацию

// you don't need the form unless your backend requires it
    @POST("/api/validateentrymobi")
    public Call<ResponseBody> validateTicket( // @NOTE the return type, you can create a POJO class similar to how I created MyBody and replace ResponseBody with it. But ResponseBody should work.
        @Body MyBody myBody
    );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...