有没有人知道用Java编写的能够在Android上托管REST服务的开源Web服务器?
我倾向于https://github.com/NanoHttpd/nanohttpd,但它需要从头开始编写Web服务框架。
PS。 Websockets将是一个加号。 PS2。我正在寻找一个托管解决方案而不是客户端,设备功能强大。
答案 0 :(得分:11)
面对类似的问题,我们选择使用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!!!
答案 1 :(得分:6)
Android有许多第三方HTTP服务器。此外,由于API级别1 Android已内置了HttpService:http://developer.android.com/reference/org/apache/http/protocol/HttpService.html。
任何HTTP服务器都“能够”REST。
如果你的意思是你想要Android的服务器端REST框架(ala JAX-RS或Restlet等),那么这是一个不同的前景,我不熟悉Android上开箱即用的那个(虽然他们可能确实存在)。原因是您通常不在移动设备上运行HTTP服务器。是的,你可以,并且在某些时候它很方便,但这不是一个常见的要求。
对于websockets,这是一个完全不同的问题,与REST无关(因此令人困惑?)。 Android上也有很多websocket impls(koush's,例如:https://github.com/koush/android-websockets)。
答案 2 :(得分:3)
如果您打算从Android设备托管您的网络服务。这是一个不寻常的案例,但是restlet框架有一个在android上运行的服务器组件。结帐http://restlet.org/learn/guide/2.2/editions/android/。
它不需要单独的Web服务器,而且非常精简。我没有亲自尝试过它作为Android服务器,所以无法保证它在那里工作得有多好,但我已经将它独立使用并用于发动机。
你应该在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();