Android. Помогите решить проблему c API

93
28 сентября 2021, 08:40

Делаю тестовое задание на Android. Нужно получить от сайта данные с API. Использую retrofit. Вроде как данные приходят, но ответ никак не выводится. Подскажите, что не так?

Интерфейс API:

public interface APIService {
@GET("rest/v2/all")
Call<Country> countriesResponse();}

класс, где происходит запрос:

public class CountriesRequest {
private String url = "https://restcountries.eu/";
private APIService mApi;
private Retrofit mRetrofit;
private OnCountriesFetchedListener mListener;
private CountryName result;
public void setListener(OnCountriesFetchedListener listener) {
    this.mListener = listener;
}
public void getResponse(){
    OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
    httpClient.addInterceptor(new Interceptor() {
        @Override
        public okhttp3.Response intercept(Interceptor.Chain chain) throws IOException {
            Request request = chain.request()
                    .newBuilder()
                    .addHeader("Accept", "application/json; charset=utf-8")
                    .addHeader("Accept-Encoding", "identity")
                    .build();
            return chain.proceed(request);
        }
    });
    mRetrofit = new Retrofit.Builder()
            .addConverterFactory(GsonConverterFactory.create())
            .baseUrl(url)
            .client(httpClient.build())
            .build();
    mApi = mRetrofit.create(APIService.class);
    Call<Country> call = mApi.countriesResponse();
    call.enqueue(new Callback<Country>() {
        @Override
        public void onResponse(Call<Country> call, retrofit2.Response<Country> response) {
            if (response.isSuccessful()) {
                if(mListener!=null) {
                    mListener.getResult(response.body());
                }
            }
        }
        @Override
        public void onFailure(Call<Country> call, Throwable t) {
            //заглушка
        }
    });
    }
}

MainActivity:

public class MainActivity extends AppCompatActivity {
private RecyclerAdapter mRecyclerAdapter;
private CountriesRequest mCountriesRequest;
private void Init() {
    mCountriesRequest = new CountriesRequest();
    RecyclerView resultRecyclerView = findViewById(R.id.countriesRecyclerView);
    resultRecyclerView.setLayoutManager(new LinearLayoutManager(this));
    mRecyclerAdapter = new RecyclerAdapter();
    resultRecyclerView.setAdapter(mRecyclerAdapter);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Init();
    Button button = findViewById(R.id.button);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mCountriesRequest.getResponse();
            mCountriesRequest.setListener(new OnCountriesFetchedListener() {
                @Override
                public void getResult(Country country) {
                    if(country !=null) {
                        List<String> names = new ArrayList<>();
                        names.add(country.getName());
                        mRecyclerAdapter.setItem(names);
                    }
                }
            });
        }
    });
}
}
READ ALSO
Вывод нажатой клавиши JButton в JLabel

Вывод нажатой клавиши JButton в JLabel

Вопрос заключается в следующем: я создаю калькулятор (это моя первая практика, прошу не судите строго), создал несколько кнопок и хотелось...

103
java.lang.IllegalArgumentException: The maximum length of cell contents (text) is 32767 characters

java.lang.IllegalArgumentException: The maximum length of cell contents (text) is 32767 characters

заполняю Excel файл, не хватает размера ячейки, вот такой формат данных:

329
Как распарсить сложный Json в List

Как распарсить сложный Json в List

От сервера приходит вот такой json

349