#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
Спасибо за все ваши предложения.