Не отображаются данные APIAndroid

Форум для тех, кто программирует под Android
Anonymous
Не отображаются данные API

Сообщение Anonymous »

Я создал приложение для Android, и данные для вызовов API отображаются в логарифме, но не отображаются в текстовых представлениях.
Вот моя основная активность

Код: Выделить всё

package com.example.apicallapp;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

import java.io.IOException;

import retrofit2.Call;

import retrofit2.Callback;
import retrofit2.Response;

public class MainActivity extends AppCompatActivity {

private TextView dataTextView;
private TextView logTextView;
private Button fetchDataButton;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

dataTextView = findViewById(R.id.dataTextView);
logTextView = findViewById(R.id.logTextView);
fetchDataButton = findViewById(R.id.fetchDataButton);

fetchDataButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
fetchData();
}
});
}

private void fetchData() {

logTextView.setText("Starting API call...");

RetrofitClient.getApiService().getBasicData().enqueue(new Callback() {
@Override
public void onResponse(Call call, Response response) {
if (response.isSuccessful()) {
BasicDataResponse basicData = response.body();
if (basicData != null && basicData.getData() != null) {
dataTextView.setText(basicData.getData());
logTextView.append("\nAPI call successful: " + basicData);
showToast("Fetched Data: " + basicData.getData());
} else {
dataTextView.setText("No data received");
logTextView.append("\nAPI call successful: No data received." + basicData);
showToast("Fetched Data: " + basicData);
}
} else {
String errorResponse = "";
try {
errorResponse = response.errorBody().string();
} catch (IOException e) {
e.printStackTrace();
}
dataTextView.setText("Failed to retrieve data");
logTextView.append("\nAPI call failure: " + errorResponse);
}
}

@Override
public void onFailure(Call call, Throwable t) {
dataTextView.setText("Error: " + t.getMessage());
logTextView.append("\nAPI call error: " + t.getMessage());
}
});
}

// Method to display a Toast message
private void showToast(String message) {
Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
}
}
Вот мой ApiService

Код: Выделить всё

package com.example.apicallapp;

import retrofit2.Call;
import retrofit2.http.GET;

public interface ApiService {
@GET("api/basic/")
Call  getBasicData();
}
Вот мой ответ BasicData

Код: Выделить всё

package com.example.apicallapp;

public class BasicDataResponse {
public String data;

public String getData() {
return data;
}

public void setData(String data) {
this.data = data;
}
}
Вот мой клиент Retrofit

Код: Выделить всё

package com.example.apicallapp;
import okhttp3.OkHttpClient;
import okhttp3.logging.HttpLoggingInterceptor;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

public class RetrofitClient {
private static final String BASE_URL = "https://6bf0-98-97-42-40.ngrok-free.app/";
private static Retrofit retrofit = null;

public static ApiService getApiService() {
if (retrofit == null) {
HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
logging.setLevel(HttpLoggingInterceptor.Level.BODY);

OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
httpClient.addInterceptor(logging);

retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.client(httpClient.build())
.build();
}
return retrofit.create(ApiService.class);
}
}

Это показывает логарифмический анализ
2024-05-27 11:01:35.647 6711-6730 EGL_emulation com.example.apicalllapp D app_time_stats: avg= 9471,29 мс мин = 1,48 мс макс = 397533,56 мс count = 42
27.05.2024 11:01:35.887 6711-6791 okhttp.OkHttpClient com.example.apicallapp I --> GET https://6bf0-98 -97-42-40.ngrok-free.app/api/basic/
2024-05-27 11:01:35.887 6711-6791 okhttp.OkHttpClient com.example.apicallapp I --> END GET
2024-05-27 11:01:35.953 6711-6791 TrafficStats com.example.apicallapp D tagSocket(96) с statsTag=0xffffffff, statsUid=-1
2024-05-27 11:01:36.202 6711 -6791 okhttp.OkHttpClient com.example.apicallapp I

Подробнее здесь: https://stackoverflow.com/questions/785 ... g-api-data

Вернуться в «Android»