Ответ на модификацию верен, но нет выборки данных в serverDB

У меня проблема с анализом данных через мой API. мой код модернизации отправлял истинное состояние в моем ответе, но если я ищу свой ServerDb, ответ не приходит.

API:

         @POST("/api/Database/NewLocation")
                Call<MapDetails> mapDetailLocation(@Body MapDetails 
mapDetails);

Детали карты:

    public class MapDetails {

    private String serialNumber;
    private String coordinate1;
    private String coordinate2;
    private String dateTime;
    private String speed;
    private Integer Port;

    public String getSerialNumber() {
        return serialNumber;
    }

       public void setSerialNumber(String serialNumber) {
           this.serialNumber = serialNumber;
       }

       public String getCoordinate1() {
           return coordinate1;
       }

       public void setCoordinate1(String coordinate1) {
           this.coordinate1 = coordinate1;
       }

       public String getCoordinate2() {
           return coordinate2;
       }

       public void setCoordinate2(String coordinate2) {
           this.coordinate2 = coordinate2;
       }

       public String getDateTime() {
           return dateTime;
       }

       public void setDateTime(String dateTime) {
           this.dateTime = dateTime;
       }

       public String getSpeed() {
           return speed;
       }

       public void setSpeed(String speed) {
           this.speed = speed;
       }

       public Integer getPort() {
           return Port;
       }

       public void setPort(Integer port) {
           Port = port;
       }

       public MapDetails(String serialNumber, String coordinate1, String                      
           coordinate2, String dateTime, String speed, Integer port) {
           this.serialNumber = serialNumber;
           this.coordinate1 = coordinate1;
           this.coordinate2 = coordinate2;
           this.dateTime = dateTime;
           this.speed = speed;
           Port = port;


       }
   }

Модернизация

          public class RetrofitClient {
       private static  final  String BASE_URL = "http://58.69.149.164:9114";
       private static RetrofitClient mInstance;
       private Retrofit retrofit;

       private RetrofitClient() {
           retrofit = new Retrofit.Builder()
            .baseUrl(BASE_URL)
            .addConverterFactory(GsonConverterFactory.create())
            .build();
       }
       public static  synchronized  RetrofitClient getmInstance(){
           if (mInstance==null){
               mInstance=new RetrofitClient();
           }
           return mInstance;
       }
       public Api getApi(){
           return  retrofit.create(Api.class);
       }

    activity:

         MapDetails mapDetails = new MapDetails(gg, lat, lon,        
           `enter code here`currentDateTimeString, "0", 9090);
                    setLocation(mapDetails);


                    DatabaseHelper databaseHelper = new        
                DatabaseHelper(getApplicationContext());
                    SQLiteDatabase db = 
               databaseHelper.getWritableDatabase();
                    boolean accepted = 
                 databaseHelper.saveLocationToLocalDatabase(lat, lon, 
             currentDateTimeString, syncPassed, db);
                    if (accepted == true)
                        Snackbar.make(view, "Location Found", Snackbar.LENGTH_LONG)
                                .setAction("Action", null).show();
                    else
                        Snackbar.make(view, "Error Location", Snackbar.LENGTH_LONG)
                                .setAction("Action", null).show();

                }

                private void setLocation(MapDetails mapDetails) {

                    initializeRetrofit(mapDetails);
                }

                private void initializeRetrofit(MapDetails mapDetails) {
                    Retrofit.Builder builder = new Retrofit.Builder()
                            .baseUrl("http://58.69.149.164:9114")

             .addConverterFactory(GsonConverterFactory.create());

                    Retrofit retrofit = builder.build();

                    Api locate = retrofit.create(Api.class);

                    SetMapLocationApiCaller(locate, mapDetails);


                }

                private void SetMapLocationApiCaller(Api locate, MapDetails 
            mapDetails) {

                    Call<MapDetails> call = 
               locate.mapDetailLocation(mapDetails);
                    executeCallAsynchronously(call);
                }

                private void executeCallAsynchronously(Call call) {
                    call.enqueue(new Callback() {
                        @Override
                        public void onResponse(Call call, Response response) 
                     {
                            Toast.makeText(NavDrawerFleet.this, ""+response, 
                   Toast.LENGTH_LONG).show();
                        }

                        @Override
                        public void onFailure(Call call, Throwable t) {
                            Toast.makeText(NavDrawerFleet.this, 
               t.getMessage(), Toast.LENGTH_SHORT).show();

                        }
                    });

Ответ здесь "истина" означает, что транзакция верна .. но на моем сервере db данные не получены .....

также мой api:

Ответ на модификацию верен, но нет выборки данных в serverDB

    if I send that, i will having a response from my serverDb...

Совет: не раскрывайте свой URL-адрес API.

TheLittleNaruto 12.11.2018 07:08

при ответе вы никогда не сохраняли свои данные в своей базе данных, все, что вы делаете, это показывает тост.

TheLittleNaruto 12.11.2018 07:09

все в порядке, сэр, это единственный местный

user6440030 12.11.2018 08:00
0
3
166
1

Ответы 1

     @POST("api/Database/NewLocation")
     Call<ServerResponse> mapDetailLocation(@Body MapDetails mapDetails);

Добавьте этот класс в свой код, чтобы получить ответ от сервера.

ServerResponse.java класс

public class ServerResponse {

@SerializedName("Status")
@Expose
private Integer status;
@SerializedName("Message")
@Expose
private String message;

public Integer getStatus() {
return status;
}

public void setStatus(Integer status) {
this.status = status;
}

public String getMessage() {
return message;
}

public void setMessage(String message) {
this.message = message;
}

}

Измените это

private static  final  String BASE_URL = "http://58.69.149.164:9114/";

в initializeRetrofit тоже

Retrofit.Builder builder = new Retrofit.Builder().baseUrl("http://58.69.149.164:9114/")

И это

 Call<MapDetails> call = 
               locate.mapDetailLocation(mapDetails);
                    executeCallAsynchronously(call);
                }

К

 Call<ServerResponse> call = 
           locate.mapDetailLocation(mapDetails);
                executeCallAsynchronously(call);
            }

Замените свой executeCallAsynchronously как

private void executeCallAsynchronously(Call call) {
    call.enqueue(new Callback() {
        @Override
        public void onResponse(Call call, Response response)
        {
            ServerResponse res = response.body();
            int status = res.getStatus();
            String msg = res.getMessage();
        }

        @Override
        public void onFailure(Call call, Throwable t) {
            Toast.makeText(NavDrawerFleet.this,
                    t.getMessage(), Toast.LENGTH_SHORT).show();

        }
    });

после внедрения, сэр, мой код отправляет сообщение в api .. правильно?

user6440030 12.11.2018 07:22

обновил код в соответствии с вашим кодом, попробуйте. если у вас возникнут затруднения, дайте мне знать.

Ali Ahmed 12.11.2018 07:42

ошибка статуса: «Невозможно отменить упорядочивание текущего объекта JSON (например, {" name ":" value "}) в тип System.Collections.Generic.List ........... // в сообщении: Чтобы исправить эту ошибку, либо измените массив JSON на JSON (например, [1,2,3]), либо измените тип десериализации, чтобы он был нормальным ......

user6440030 12.11.2018 08:37

ваш ответ - JSON Array. это должен быть JSON Object. Пожалуйста, измените ответ на сервере. это решит вашу проблему.

Ali Ahmed 12.11.2018 10:06

Возможно ли, что модернизация может отправлять на сервер как объект json, а не как массив json?

user6440030 13.11.2018 04:59

не получил тебя на retrofit can send to server as json object rather than json array

Ali Ahmed 13.11.2018 05:59

Другие вопросы по теме