Retrofit2 response.body() возвращает c.f.a.r0@13b62af9

#java #android-studio #retrofit2

#java #android-студия #модернизация 2

Вопрос:

Retrofit2 возвращает c.f.a.r0@13b62af9 когда я вызываю response.body(), таким образом, я не могу разобрать содержимое. Я делаю что-то не так

клиент публичного класса {

 public static final String BASE_URL = "url-here";
private static Retrofit retrofit = null;


public static Retrofit getClient() {
    if (retrofit==null) {
        retrofit = new Retrofit.Builder()
                .baseUrl(BASE_URL)
                .addConverterFactory(GsonConverterFactory.create())
                .build();
    }
    return retrofit;
}
 

}

а вот и мой ApiInterface

открытый интерфейс ApiInterface {

 @GET("getNearbySpots.php")
Call<SpotResponse> getNearbySpots(@Query("lat") String lat, @Query("lng") String lng);

@GET("internetTime.php")
Call<InternetTimeResponse> getInternetTime();

@FormUrlEncoded
@POST("addReservation.php")
Call<String> addReservation(@Field("hash") String hash, @Field("spotId") String spotId, @Field("spotName") String spotName, @Field("spotLocation") String spotLocation,
                            @Field("name") String name, @Field("email") String email, @Field("phone") String phone,
                            @Field("foodieCount") int foodieCount, @Field("timeSlot") String timeSlot, @Field("bookingDate") long bookingDate,
                            @Field("freeBooking") boolean freeBooking, @Field("cost") int cost, @Field("tipAmount") int tipAmount);

@GET("getReservationForHash.php")
Call<ReservationResponse> getReservationForHash(@Query("hash") String hash);

@GET("getReservationById.php")
Call<ReservationResponse> getReservationById(@Query("resId") int resId);

@POST("addUser.php")
Call<String> addUser();
 

}

Редактировать

Вот где вызывается response.body()

 private void fetchData(String lat, String lng){
    Call<SpotResponse> call = apiService.getNearbySpots(lat, lng);
    call.enqueue(new Callback<SpotResponse>() {
        @Override
        public void onResponse(@NonNull Call<SpotResponse> call, @NonNull 
Response<SpotResponse> response) {
            if (response.isSuccessful()) {
                ListA = new ArrayList<>();
                ListA = response.body().getSpotList();
                String dateToFormat = response.body().getTime();
                Log.e("MainActivity", "responseBody: "   response.body());
                restaurantUtils = new RestaurantUtils(dateToFormat);
 

Комментарии:

1. какой именно response.body() ??

2. @Sadegh Я отредактировал свой вопрос, чтобы указать, где вызывается response.body().

Ответ №1:

Вам нужно добавить toString() метод в класс SpotResponse, который вы хотите отобразить в Log.e("MainActivity", "responseBody: " response.body());

Ответ №2:

попробуйте использовать этот код вместо Log.e("MainActivity", "responseBody: " response.body());

  for(int i = 0; i<ListA.size(); i  ){

        Log.e("MainActivity", "lat "  i   " : "  ListA.get(i).lat); 
        Log.e("MainActivity", "lng "  i   " : "  ListA.get(i).lng);    
}
 

он печатает все латинские и латинские буквы . вы не можете печатать response.body() , потому что тип этого — класс SpotResponse.

Ответ №3:

Оказывается, проблема заключалась в том, что minifyEnabled true

Спасибо за все ваши предложения.