Retrofit 2. Отправка результата и получение таблицы рекордов
- import java.io.IOException;
- import java.util.List;
- import java.util.Random;
- import retrofit2.Call;
- import retrofit2.Response;
- import retrofit2.Retrofit;
- import retrofit2.converter.gson.GsonConverterFactory;
- import retrofit2.http.Field;
- import retrofit2.http.FormUrlEncoded;
- import retrofit2.http.GET;
- import retrofit2.http.POST;
- public final class HiScoreRetrofitExample {
- private static final String API_URL = "http://localhost:8080";
- public static void main(String[] args) throws IOException {
- Random random = new Random();
- String[] names = {"Паша", "Света", "Олег", "Ярик", "Виола", "Миша", "Оля", "Петя"};
- Retrofit retrofit = new Retrofit.Builder()
- .baseUrl(API_URL)
- .addConverterFactory(GsonConverterFactory.create())
- .build();
- HiScoreApi api = retrofit.create(HiScoreApi.class);
- // Добавляем три результата
- for (int i = 1; i <= 3; i++) {
- String name = names[random.nextInt(names.length)];
- int score = random.nextInt(900) + 100;
- Call<Void> setCall = api.set(name, score);
- Response<Void> response = setCall.execute();
- if (response.isSuccessful() && response.code() == 200) {
- System.out.println("Успешно добавлено");
- } else {
- // Произошла ошибка
- System.out.println(response.errorBody());
- }
- }
- // Выводим таблицу рекордов
- Call<List<Score>> getCall = api.get();
- Response<List<Score>> response = getCall.execute();
- response.body().forEach(System.out::println);
- }
- public interface HiScoreApi {
- @GET("/hiscore.php?action=get")
- Call<List<Score>> get();
- @FormUrlEncoded
- @POST("/hiscore.php?action=set")
- Call<Void> set(@Field("name") String name, @Field("score") int score);
- }
- public static class Score {
- private final String name;
- private final int score;
- private final String date;
- public Score(String name, int score, String date) {
- this.name = name;
- this.score = score;
- this.date = date;
- }
- @Override
- public String toString() {
- return String.format("%12s %8d %20s", name, score, date);
- }
- }
- }
- dependencies {
- compile 'com.squareup.retrofit2:retrofit:2.2.0'
- compile 'com.squareup.retrofit2:converter-gson:2.2.0'
- }
Пример обращения к серверу, для обработки игровых результатов. Используется библиотека Retrofit2.
Отправляет три результата, посылая POST-запрос и проверяя успешность добавления.
Затем выводит таблицу рекордов, обращаясь к API для получения данных в формате json.
В этом примере парсинг json происходит автоматически, благодаря маппингу Gson, который ассоциирует название поля в классе Score с соответствующим ему полем в объекте json.
Отправляет три результата, посылая POST-запрос и проверяя успешность добавления.
Затем выводит таблицу рекордов, обращаясь к API для получения данных в формате json.
В этом примере парсинг json происходит автоматически, благодаря маппингу Gson, который ассоциирует название поля в классе Score с соответствующим ему полем в объекте json.