Как разместить веб-сервисы REST на Android?

6

Кто-нибудь знает веб-сервер с открытым исходным кодом, написанный на Java, способный размещать сервисы REST на Android?

Я склоняюсь к https://github.com/NanoHttpd/nanohttpd, но для этого потребуется создать структуру веб-сервисов с нуля.

пс. Websockets будет плюсом. ps2. Я ищу решение хостинга, а не клиент и устройство достаточно мощное.

  • 0
    Я также борюсь с этой проблемой, у вас есть более читабельный справочник, как разместить остальные API на Android?
Теги:
web-services

3 ответа

10

Перед аналогичной проблемой мы решили пойти с Koush AndroidAsync:

https://github.com/koush/AndroidAsync

Это довольно удобный проект по целому ряду причин. В дополнение к поддержке websockets вы можете в нескольких строках реализовать базовый обработчик POST или GET и передать JSON, вокруг которого это все, что нам нужно. Пример из этой страницы github (поддерживает POST таким же образом):

AsyncHttpServer server = new AsyncHttpServer();
List<WebSocket> _sockets = new ArrayList<WebSocket>();

server.get("/", new HttpServerRequestCallback() {
    @Override
    public void onRequest(AsyncHttpServerRequest request,   AsyncHttpServerResponse response) {
    response.send("Hello!!!");
    }
});

// listen on port 5000
server.listen(5000);
// browsing http://localhost:5000 will return Hello!!!
  • 0
    Мы используем AndroidAsync 2.2.1 для проекта автоматизации тестирования. К сожалению, он не выглядит достаточно стабильным для нашего сценария, где сервер должен работать в течение нескольких дней и обрабатывать пару 1000 запросов в течение этого времени. Время от времени он блокирует основной поток и требует перезапуска приложения.
6

Существует много сторонних HTTP-серверов для Android. Кроме того, поскольку API уровня 1 Android имеет HttpService: http://developer.android.com/reference/org/apache/http/protocol/HttpService.html, встроенный.

Любой HTTP-сервер "способен" REST.

Если вы имеете в виду, что вам нужна инфраструктура REST на стороне сервера для Android (ala JAX-RS или Restlet или таковая), то это другая перспектива, и я не знаком с тем, который будет работать из коробки на Android (хотя они, вероятно, действительно есть). Причина этого заключается в том, что вы обычно не запускаете HTTP-сервер на мобильном устройстве. Да, вы можете, и в определенное время это удобно, но это просто не общее требование.

Что касается websockets, это совершенно другой вопрос и не имеет ничего общего с REST (так что это путает?). Также есть множество приложений для Android (koush's, например: https://github.com/koush/android-websockets).

  • 0
    Этот HttpService устарел с 22 уровня API.
3

Если вы намереваетесь размещать свои веб-сервисы с устройства Android. Это необычный случай, но в структуре restlet есть серверный компонент, который работает на android. Оформить заказ http://restlet.org/learn/guide/2.2/editions/android/.

Он не требует отдельного веб-сервера и довольно скудный. Я не пробовал его как сервер андроида лично, поэтому не могу ручаться за то, насколько хорошо он работает там, но я использовал его автономно и на appengine.

Вам нужно уйти с чем-то вроде обертывания под кодом в службе Android

Component serverComponent = new Component();
serverComponent.getServers().add(Protocol.HTTP, 8080);  
final Router router = new Router(serverComponent.getContext().createChildContext());  
router.attach("/myrestendpoint", MyServerResource.class);  
serverComponent.getDefaultHost().attach(router);  
serverComponent.start();

Ещё вопросы

Сообщество Overcoder
Наверх
Меню