Apache HttpClient. Отправка результата и получение таблицы рекордов
- import java.io.IOException;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Random;
- import org.apache.http.HttpResponse;
- import org.apache.http.NameValuePair;
- import org.apache.http.client.HttpClient;
- import org.apache.http.client.entity.UrlEncodedFormEntity;
- import org.apache.http.client.methods.HttpGet;
- import org.apache.http.client.methods.HttpPost;
- import org.apache.http.impl.client.BasicResponseHandler;
- import org.apache.http.impl.client.HttpClientBuilder;
- import org.apache.http.message.BasicNameValuePair;
- import org.json.JSONArray;
- import org.json.JSONObject;
- public final class HiScoreApacheExample {
- private static final String API_URL = "http://localhost:8080/hiscore.php";
- public static void main(String[] args) throws IOException {
- Random random = new Random();
- String[] names = {"Паша", "Оля", "Олег", "Ярик", "Виола", "Миша", "Семён", "Петя"};
- HiScoreApacheExample hiscore = new HiScoreApacheExample();
- // Добавляем три результата
- for (int i = 1; i <= 3; i++) {
- String name = names[random.nextInt(names.length)];
- int score = random.nextInt(900) + 100;
- hiscore.add(name, score);
- }
- // Выводим таблицу рекордов
- hiscore.show();
- }
- private final HttpClient client = HttpClientBuilder.create().build();
- public void add(String name, int score) throws IOException {
- HttpPost post = new HttpPost(API_URL);
- List<NameValuePair> data = new ArrayList<>();
- data.add(new BasicNameValuePair("action", "set"));
- data.add(new BasicNameValuePair("name", name));
- data.add(new BasicNameValuePair("score", Integer.toString(score)));
- post.setEntity(new UrlEncodedFormEntity(data, "UTF-8"));
- HttpResponse response = client.execute(post);
- // Проверяем результат по HTTP коду
- if (response.getStatusLine().getStatusCode() == 200) {
- // HTTP 200 OK
- System.out.println("Успешно добавлено");
- return;
- }
- // Произошла ошибка
- String responseText = new BasicResponseHandler().handleResponse(response);
- JSONObject result = new JSONObject(responseText);
- System.out.println("Ошибка");
- System.out.println(result.getString("error"));
- }
- public void show() throws IOException {
- HttpGet httpGet = new HttpGet(API_URL + "?action=get");
- HttpResponse response = client.execute(httpGet);
- String responseText = new BasicResponseHandler().handleResponse(response);
- // Выводим результат
- JSONArray scores = new JSONArray(responseText);
- int length = scores.length();
- for (int i = 0; i < length; i++) {
- JSONObject score = scores.getJSONObject(i);
- System.out.format("%d. %12s %8d %20s%n", i + 1,
- score.getString("name"), score.getInt("score"),
- score.getString("date"));
- }
- }
- }
- dependencies {
- compile 'org.json:json:20160810'
- compile 'org.apache.httpcomponents:httpclient:4.5.3'
- }
Пример обращения к серверу, для обработки игровых результатов. Используется библиотека Apache HttpClient.
Отправляет три результата, посылая POST-запрос и проверяя успешность добавления.
Затем выводит таблицу рекордов, обращаясь к API для получения данных в формате json.
Отправляет три результата, посылая POST-запрос и проверяя успешность добавления.
Затем выводит таблицу рекордов, обращаясь к API для получения данных в формате json.