2013-06-14 2 views
6

안드로이드에서 REST 서비스를 호스팅 할 수있는 Java로 작성된 오픈 소스 웹 서버를 아는 사람이 있습니까?안드로이드에서 REST 웹 서비스를 호스팅하는 방법은 무엇입니까?

나는 https://github.com/NanoHttpd/nanohttpd으로 기울고 있지만, 웹 서비스 프레임 워크를 처음부터 작성해야 할 것이다.

ps. 웹 소켓은 더할 나위없이 좋을 것입니다. ps2. 내가 솔루션을 호스팅하지 찾고 클라이언트가 아니고 장치가 충분히 강력합니다.

답변

6

Android 용 타사 HTTP 서버가 많이 있습니다. 또한 API 수준 1 Android에는 HttpService : 이 내장되어 있습니다.

모든 HTTP 서버는 REST가 가능합니다.

안드로이드 (ala JAX-RS 또는 Restlet 등) 용 서버 측 REST 프레임 워크를 원한다는 것은 다른 전망이며 안드로이드에서 작동하지 않을 것으로 알고 있습니다. 아마 존재한다). 그 이유는 일반적으로 모바일 장치에서 HTTP 서버를 실행하지 않기 때문입니다. 예, 할 수 있으며 특정 시간에 편리합니다.하지만 일반적인 요구 사항은 아닙니다.

웹 소켓의 경우 완전히 다른 질문이며 REST와는 아무런 관련이 없습니다 (혼란 스럽습니까?). 안드로이드에 대한 많은 websocket impls도 있습니다 (koush 's, 예 : https://github.com/koush/android-websockets).

3

Android 기기에서 웹 서비스를 호스팅하려는 경우. 드문 경우지만 restlet 프레임 워크에는 안드로이드에서 실행되는 서버 구성 요소가 있습니다. Checkout http://restlet.org/learn/guide/2.2/editions/android/.

별도의 웹 서버가 필요없고 비교적 가볍습니다. 나는 개인적으로 안드로이드 서버로 시도하지 않았으므로 그곳에서 얼마나 잘 작동하는지 보증 할 수는 없지만 독립형 및 appengine에 사용했습니다.

https://github.com/koush/AndroidAsync

이가있다 : 당신은 우리가 Koush의 AndroidAsync로 이동하기로 비슷한 문제에 직면 안드로이드 서비스

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(); 
9

코드 아래 포장처럼 뭔가

도망한다 다양한 이유로 꽤 편리한 프로젝트. 웹 소켓을 지원하는 것 외에도 몇 줄에서 기본 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!!! 
관련 문제