Обработка JSON-запросов на сервере Java-ой

269
18 апреля 2017, 07:45

Есть хостинг для сайта от reg.ru, управляемый ISP Manager'ом, установлена CentOS 6.8. Каким образом, используя Java, можно обрабатывать JSON-запросы, которые приходят на сервер? То есть, прямо на его IP-адрес на определенный порт, или же на какую-то страницу. Не знаю толком, как подойти к этому вопросу.

Подробнее:
1. Серверная часть:
У меня есть сервер на линуксе, мне нужно научить его обрабатывать входящие запросы. На php все делается предельно просто (указываем адрес для получения запросов, затем file_get_contents('php://input') и json_decode($json)), это я знаю, но мне нужно реализовать это на Java. Как к этому подступиться, я не знаю. Задавал некоторое время назад похожий вопрос, который потом удалил, но там была немного другая суть.

2. Что касается самих запросов:
Работаю с VK API, то есть, каждый раз при обновлениях в сообществе, новых сообщениях или еще чем-то, ВК будет слать POST-запросы на тот адрес, который я укажу:

Адрес вида IP:PORT я, скорее всего, смогу указать, но лучше было бы, если бы я мог обрабатывать запросы, отправленные, например, на адрес того же php-файла.

Буду благодарен за любую помощь. Не знаю точно, как решить этот вопрос, потому и решил спросить. Если единственный вариант - писать сервер и прослушивать порты, тогда буду копать в эту сторону. Тогда вопрос вдогонку к этому: достаточно ли джава кроссплатформенная, чтобы я на маке написал вышеописанное приложение, и оно спокойно работало под линухом?

Answer 1

Для простого старта могу предложить эти библиотеки:

  • http://sparkjava.com/

Это маленький фреймворк для запуска веб сервера "из коробки". Если устроят настройки по умолчанию, достаточно будет указать только методы обработки запросов.

Вот тут есть пример RestAPI приложения.

public class HelloWorld {
    public static void main(String[] args) {
        get("/hello", (req, res) -> {
            return "Hello World";
        });
    }
}
  • https://github.com/google/gson

Эта библиотека которую указывают в примерах предыдущего фреймворка и, пожалуй лучше ее и использовать.

// Serialization
Gson gson = new Gson();
gson.toJson(1);            // ==> 1
gson.toJson("abcd");       // ==> "abcd"
gson.toJson(new Long(10)); // ==> 10
int[] values = { 1 };
gson.toJson(values);       // ==> [1]
// Deserialization
int one = gson.fromJson("1", int.class);
Integer one = gson.fromJson("1", Integer.class);
Long one = gson.fromJson("1", Long.class);
Boolean false = gson.fromJson("false", Boolean.class);
String str = gson.fromJson("\"abc\"", String.class);
String[] anotherStr = gson.fromJson("[\"abc\"]", String[].class);
READ ALSO
Hashmap выдает 0 размер

Hashmap выдает 0 размер

Первая мапа выдает размер 3, все окНо та, которая заполняется из бд, всегда имеет размер 0, повторяющихся ключей и значений нет

200
Заполнить массив типа ContentProviderOperation

Заполнить массив типа ContentProviderOperation

Здравствуйте, появилась проблемаДелаю телефонную книжку, конкретно - изменение контакта (при тапе на контакт в списке открывается новая...

182
BottomNavigationView, переключение между activity

BottomNavigationView, переключение между activity

Здравствуйте Я только начинающий и прошу не судить строго и помочьПроблема состоит в том, что я имею 5 кнопок на BottomNavigationBar и вопрос в том,...

293
Как правильно получить массив байт по TCP/IP?

Как правильно получить массив байт по TCP/IP?

Есть сервер, который по команде присылает некоторое количество байтОбъём данных заранее известен - 280 Кбайт

221